最近有人告诉我,我们可以在Python中打印变量,就像Perl一样.
代替:
print("%s, %s, %s" % (foo, bar, baz))
Run Code Online (Sandbox Code Playgroud)
我们可以这样做:
print("%(foo)s, %(bar)s, %(baz)s" % locals())
Run Code Online (Sandbox Code Playgroud)
像在Perl中那样,在Python中打印变量的方式是不是很简单?我认为第二个解决方案实际上看起来非常好并且使代码更具可读性,但是那里的locals()让它看起来像是一种令人费解的方式.
给出以下代码:
a = 0
def foo():
# global a
a += 1
foo()
Run Code Online (Sandbox Code Playgroud)
运行时,Python抱怨:UnboundLocalError:赋值前引用的局部变量'a'
但是,当它是一本字典时......
a = {}
def foo():
a['bar'] = 0
foo()
Run Code Online (Sandbox Code Playgroud)
事情运行得很好......
任何人都知道为什么我们可以在第二块代码中引用a,但不是第一块?
python ×2