global, nonlocal全局变量,非自身局部变量,局部变量的区分
y = 10
def Func():
x = 30
global y
y = 50
def Func2():
nonlocal x
x = 20
print('func2:' , x)
Func2()
print('func:',x)
Func()
print(y)
参数的传递:
def Changeinfo(i):
i += 10
i = 1
Changeinfo(i)
print(i)
def ChangeList(l):
l[0] = 0
li=[99, 98, 97]
ChangeList(li)
print(li)
结果第一个i没有被改变,第二个数组li被改变了。这是为什么呢?
不可变参数类型传递副本给函数,源值不变
可变类型传递地址引用,函数内部会影响原始值