擅长:python、mysql、java
<p><strong>编辑</strong>:为了使<code>lfmt</code>在从不同名称空间调用时工作,您需要<code>inspect</code>模块。注意,作为<a href="http://docs.python.org/library/inspect.html#inspect.currentframe" rel="nofollow noreferrer">the documentation warns</a>,<code>inspect</code>模块可能不适合生产代码,因为它可能无法与Python的所有实现一起工作</p>
<pre><code>import inspect
def lfmt(s):
caller = inspect.currentframe().f_back
return s.format(**caller.f_locals)
a = 3
b = 'foo'
c = dict(mykey='myval')
print(lfmt('a is {a}, b is {b}, mykey is {c[mykey]}'))
# a is 3, b is foo, mykey is myval
</code></pre>