【发布时间】:2015-08-08 20:06:31
【问题描述】:
我一直在关注 Python 文档中的教程,并且遇到了有关使用 global 和 nonlocal 关键字的代码。我已经通读了代码,但我不太明白为什么某些代码会执行它的功能。代码如下:
def scope_test():
def do_local():
spam = "local spam"
def do_nonlocal():
nonlocal spam
spam = "nonlocal spam"
def do_global():
global spam
spam = "global spam"
spam = "test spam"
do_local()
print("After local assignment:", spam)
do_nonlocal()
print("After nonlocal assignment:", spam)
do_global()
print("After global assignment:", spam)
scope_test()
print("In global scope:", spam)
打印输出:
After local assignment: test spam
After nonlocal assignment: nonlocal spam
After global assignment: nonlocal spam
In global scope: global spam
在do_global() 调用之后,为什么spam 会打印出nonlocal spam?不应该打印出global spam吗?
谢谢!
【问题讨论】:
-
@ShawnMehan 虽然两个问题都使用相同的代码示例,但前面的问题并没有询问打印输出。
标签: python