变量的作用域
nonlocal和global的区别
def scope_test():
spam = "spam"
def do_local():
spam = "local spam"
print(spam)
def do_nonlocal():
nonlocal spam
spam = "nonlocal spam"
def do_global():
global spam
spam = "global spam"
do_local()
print("After local assignmane:", spam)
do_nonlocal()
print("After nonlocal assignment:", spam)
do_global()
print("After global assignment:", spam)
scope_test()
print("In global scope:", spam)
输出
After local assignmane: spam
After nonlocal assignment: nonlocal spam
After global assignment: nonlocal spam
In global scope: global spam
误区
courses = ["a", "b", "c"]
def change_list(a):
a[0] = "d"
print(a)
change_list(courses)
print(courses)
courses = ["a", "b", "c"]
def change_list2(a):
a = ["d", "e", "f"]
print(a)
change_list2(courses)
print(courses)