Re: [閒聊] 人急造反,狗急跳牆

看板Python作者 (生の直感、死の予感)時間17年前 (2007/10/29 15:34), 編輯推噓1(101)
留言2則, 1人參與, 最新討論串4/5 (看更多)
※ 引述《Lucemia (生の直感、死の予感)》之銘言: 恐怖的code +1 (修正版) 解了 locals 因為frames變動而無法取用的問題, 不過是靠inspect取用的,不能說很理想。 code的長度也大大的超出預期。 import inspect; import re; php_style = re.compile('(\$([\w]+))') _ = lambda __i: reduce(lambda __a,__b:__a.replace(__b[0], str(inspect.currentframe().f_back.f_back.f_locals[__b[1]])) if __b[1] in inspect.currentframe().f_back.f_back.f_locals else( __a.replace(__b[0],str(globals()[__b[1]])) if __b[1] in globals() else __a), php_style.findall(__i),__i) 這段程式碼是證明 python 只要想做的話, 也可以做到php style的字串功能。 這個功能差異畢竟還蠻多php user 念念不忘的。 php: "insert into table1 set f1 = $v1, f2 = $v2, f3 = $v3" python: _("insert into table1 set f1 = $v1, f2 = $v2 , f3 = $v3") 至於這樣的function是否有必要就見人見智了。 我喜好去選擇寫幾個好用的固定function (也許看起來難懂) 但能讓整體的coding style變的更簡單易懂,也減少coding 時發生的錯誤。 像在很長的 sql 指令,變數太多時, 由於python式的變數賦值是在字串尾端才處理時, 會造成順序混淆的情況,使用這個方式。 也能夠減少sql 的錯誤情況。 JQUERY, BOOST, STD, 或是 python 的library中, 比這個複雜的code可以說是比比皆是。(一個reduce下 一個replace) 但是造就的效果就是code本體需要常改動的地方變的簡明易懂。 我不會發這類的新東西,沒bug的話這個code我也就不動了。 -- 剛寫好的code 有錯請指正 m(_ _)m -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.110.216.36

10/29 08:49,
有點問題 lambda裡面的locals()是獨立的...
10/29 08:49
※ 編輯: Lucemia 來自: 140.110.216.36 (10/29 15:33) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.110.216.36

11/05 17:21, , 1F
要不要換成兩個底線?一個底線 _ 在互動環境是保留字
11/05 17:21, 1F

11/05 17:22, , 2F
代表上一個運算結果..
11/05 17:22, 2F
文章代碼(AID): #179Op-XV (Python)
文章代碼(AID): #179Op-XV (Python)