# case 1
x = 1
def test():
x = 2
test()
print(x) #1
# case 2
x = 1
def test():
global x
x = 2
test()
print(x) #2
在案例1中,变量
x
里面
test
是本地作用域,因此更改其值不会更改外部声明的x的值
因此不会变异
十
测试
.
在案例2中,变量
十
测试
测试
十
测试
.
# case 3
x = [1]
def test():
global x
x = [2]
test()
print(x) # [2]
# case 4
x = [1]
def test():
x[0] = 2
test()
print(x) #[2]
十
里面
测试
测试
,但当您将新列表分配给
,将创建对此列表的新引用
[2]
而改变这个新列表并不会改变外部声明的列表中的值
测试
在案例4中,列表
十
测试
方法保存对在函数外部声明的相同列表实例的引用
测试
,当你打电话
x[0]
2
到
index 0