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 = "extend 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)
# do_local() 中的 spam 是局部变量,所以它不能改变全局变量 spam 的内容。
# do_nonlocal() 中的 spam 在调用时指向之前最近的局部变量,因此它变为了 "nonlocal spam"。
# do_global() 中的 spam 是全局变量,对它进行赋值不影响最后的输出。
python里的nonlocal和global区别?
最新推荐文章于 2024-05-08 09:02:47 发布