国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

這不是“奇技淫巧” - Python中將字符串編譯成表達(dá)式運(yùn)行的方法和使用場(chǎng)景

ZweiZhao / 544人閱讀

摘要:的自帶函數(shù)提供了一個(gè)非常有趣的特性,可以將給一個(gè)字符串當(dāng)做一個(gè)表達(dá)式去執(zhí)行。例如這種服務(wù)器自助運(yùn)維的運(yùn)維任務(wù)中的定義和判斷

Python的自帶函數(shù) eval 提供了一個(gè)非常有趣的特性,可以將給一個(gè)字符串當(dāng)做一個(gè)表達(dá)式去執(zhí)行。先上一個(gè)例子:

cond = compile("succ_rate<99","","eval")
succ_rate = 100
print(eval(cond))

上面這段代碼執(zhí)行結(jié)果是 True

表達(dá)式執(zhí)行所需的參數(shù)如果不想硬編碼,也可以通過一個(gè)字典傳遞進(jìn)去:

cond = compile("succ_rate<99","","eval")
data={"succ_rate":100}
print(eval(cond,data))

看到這里大家可能會(huì)有疑問,這種“奇技淫巧”到底有什么用,表達(dá)式都是靜態(tài)代碼直接正常寫不就行了么?實(shí)際上在大型的系統(tǒng)中經(jīng)常會(huì)有“配置中心”之類的模塊,這種模塊通常是為了能夠在代碼不需要上線的情況下提供動(dòng)態(tài)改變一些判斷邏輯的功能,邏輯簡單并且改動(dòng)頻繁的業(yè)務(wù)判斷可以通過這種動(dòng)態(tài)的方式來進(jìn)行實(shí)現(xiàn)。

例如一個(gè)功能的上線以后需要篩選一部分手機(jī)設(shè)備進(jìn)行逐步開啟功能開關(guān),第一批可能會(huì)提供一批設(shè)備的機(jī)型列表進(jìn)行開啟,隨后過幾天會(huì)在這個(gè)基礎(chǔ)上增加操作系統(tǒng)版本號(hào)的判斷,再過一段時(shí)間以后會(huì)去掉機(jī)型的限制轉(zhuǎn)而根據(jù)CPU型號(hào)進(jìn)行判斷等等。對(duì)于這種純體力活,我們可以將表達(dá)式存儲(chǔ)在數(shù)據(jù)庫中,需要判斷的時(shí)候準(zhǔn)備好參數(shù) eval 一下即可,達(dá)到不需要上線代碼就能完成需求的目的,甚至還可以將權(quán)限下放給產(chǎn)品同學(xué)自行控制。

另外一個(gè)非常適合的應(yīng)用場(chǎng)景是可以用來實(shí)現(xiàn)簡單的規(guī)則引擎,規(guī)則引擎的判斷邏輯可以完全用python的表達(dá)式進(jìn)行書寫,可讀性會(huì)比自己創(chuàng)建一種描述規(guī)則好很多,也能降低學(xué)習(xí)成本。例如這種服務(wù)器自助運(yùn)維的運(yùn)維任務(wù)中 criteria 的定義和判斷:

criteria: succ_rate<99 and succ_rate>50
action: "service xxx restart"

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/44584.html

相關(guān)文章

  • 奇技淫巧第二期

    摘要:因?yàn)楫a(chǎn)生的順序是先比較第一位,再比較第二位,并且沒有很好的解決辦法。這種語法的限制是,需要保證異常從屬與異常。兩個(gè)異常都將顯示。 這個(gè)系利的初衷是回顧瑣碎知識(shí)點(diǎn),但...

    Rocture 評(píng)論0 收藏0
  • JavaScript 如何工作:解析、抽象語法樹(AST)+ 提升編譯速度5個(gè)技巧

    摘要:無論你使用的是解釋型語言還是編譯型語言,都有一個(gè)共同的部分將源代碼作為純文本解析為抽象語法樹的數(shù)據(jù)結(jié)構(gòu)。和抽象語法樹相對(duì)的是具體語法樹,通常稱作分析樹。這是引入字節(jié)碼緩存的原因。 這是專門探索 JavaScript 及其所構(gòu)建的組件的系列文章的第 14 篇。 想閱讀更多優(yōu)質(zhì)文章請(qǐng)猛戳GitHub博客,一年百來篇優(yōu)質(zhì)文章等著你! 如果你錯(cuò)過了前面的章節(jié),可以在這里找到它們: JavaS...

    raoyi 評(píng)論0 收藏0
  • Python基礎(chǔ)題目大全,測(cè)試你水平,鞏固知識(shí)(含答案)

    摘要:里,有兩種方法獲得一定范圍內(nèi)的數(shù)字返回一個(gè)列表,還有返回一個(gè)迭代器。在引用計(jì)數(shù)的基礎(chǔ)上,還可以通過標(biāo)記清除解決容器對(duì)象可能產(chǎn)生的循環(huán)引用的問題。列舉常見的內(nèi)置函數(shù)的作用,過濾函數(shù),循環(huán)函數(shù)累積函數(shù)一行代碼實(shí)現(xiàn)乘法表。 showImg(https://segmentfault.com/img/remote/1460000019294205); 1、為什么學(xué)習(xí)Python? 人生苦短?人間...

    huhud 評(píng)論0 收藏0
  • 如何給列表降維?sum()函數(shù)妙用

    摘要:上個(gè)月,學(xué)習(xí)群里的同學(xué)問了個(gè)題目,大意可理解為列表降維,例子如下想得到結(jié)果原始數(shù)據(jù)是一個(gè)二維列表,目的是獲取該列表中所有元素的具體值。不經(jīng)意間,函數(shù)的注意事項(xiàng),竟把其它的進(jìn)階內(nèi)容都聯(lián)系起來了。小小的函數(shù),竟成為學(xué)習(xí)之路上的一個(gè)樞紐。 上個(gè)月,學(xué)習(xí)群里的 S 同學(xué)問了個(gè)題目,大意可理解為列表降維 ,例子如下: oldlist = [[1, 2, 3], [4, 5]] # 想得到結(jié)果:...

    Channe 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<