我經常發現自己使用以下模式進行字符串格式化。在字符串格式中捕獲** vars()模式
a = 3
b = 'foo'
c = dict(mykey='myval')
#prints a is 3, b is foo, mykey is myval
print('a is {a}, b is {b}, mykey is {c[mykey]}'.format(**vars()))
也就是說,我經常需要在本地命名空間中打印值,由對vars()的調用表示。然而,當我查看我的代碼時,不斷重複.format(**vars())
模式似乎非常不合理。
我想創建一個捕獲此模式的函數。這將是類似於以下內容。
# doesn't work
def lfmt(s):
"""
lfmt (local format) will format the string using variables
in the caller's local namespace.
"""
return s.format(**vars())
除了通過我在lfmt
命名空間就是時間,乏()不再是我想要的。
如何編寫lfmt以便它在調用者的命名空間中執行vars(),以便下面的代碼可以像上面的例子那樣工作?
print(lfmt('a is {a}, b is {b}, mykey is {c[mykey]}'))
您的要求似乎違背的Python的精神我不再擁有曾經做過的Python排版,但我想不出有什麼辦法來實現你想要的。 – Sean 2010-02-04 17:57:24