我通常使用下面的圖案(如this question提到):縮寫形式的String.Format(...,**當地人())
a=1
s= "{a}".format(**locals())
我認爲這是寫易於閱讀的好方法碼。
有時它以「鏈」串格式是有用的,以「模塊化」複雜的字符串創建:
a="1"
b="2"
c="{a}+{b}".format(**locals())
d="{c} is a sum".format(**locals())
#d=="1+2 is a sum"
很快,代碼糾纏與X.format(**locals())
。 爲了解決這個問題,我試圖創建一個lambda:
f= lambda x: x.format(**locals())
a="1"
b="2"
c= f("{a}+{b}")
d= f("{c} is a sum")
但這拋出一個KeyError異常,因爲locals()
是拉姆達的當地人。
我也試圖應用的格式只在最後一個字符串:
a="1"
b="2"
c="{a}+{b}"
d="{c} is a sum".format(**locals())
#d=="{a}+{b} is a sum"
但是,這並不工作,因爲只有蟒格式一次。 現在,我可以寫反覆格式化,直到有什麼更多的做一個功能:
def my_format(string, vars):
f= string.format(**vars)
return f if f==string else my_format(f, vars)
但我想知道:有沒有更好的方式來做到這一點?
你可能希望當地人重寫全局變量。目前,你反其道而行之,因爲後來的辯論贏得勝利。 – Collin
好點...我會做出改變。 –