Re: [閒聊] 人急造反,狗急跳牆
※ 引述《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,
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
討論串 (同標題文章)
Python 近期熱門文章
PTT數位生活區 即時熱門文章