我经常发现自己使用了以下模式来扼制格式。
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()))
这就是说,我常常需要在当地名称空间印刷价值,以呼呼呼呼var。 然而,在我看一看我的代码时,似乎总是重复<代码>.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())
除非在<代码>上出现Imt名称空间时,斜体已不复存在。
我怎么能写下lf,以便把var(var)放在打电话者的名字空间中,这样,以下法典就能够发挥上述作用?
print(lfmt( a is {a}, b is {b}, mykey is {c[mykey]} ))