不可变数据类型传参
不可变数据类型作为参数,在函数内对变量进行赋值,与在函数外是相同的。
都重新开辟了一个内存空间来存储变量值。
也可以说是重新创建一个对象去指向所赋的值。
def fn(a):
a = 6
print("函数内:",a,"内存地址:",id(a))
a = 0
fn(a)
print("函数外:",a,"内存地址:",id(a))
运行结果:
函数内: 6 内存地址: 1885433008
函数外: 0 内存地址: 1885432816
可变数据类型传参
可变数据类型作为参数,在函数内外修改的都是同一个对象
def fn(li):
li.extend([1,2,3])
print("函数内:",li,"内存地址:",id(li))
li = [3,2,1,0]
fn(li)
print("函数外:",li,"内存地址:",id(li))
执行结果
函数内: [3, 2, 1, 0, 1, 2, 3] 内存地址: 2723756273928
函数外: [3, 2, 1, 0, 1, 2, 3] 内存地址: 2723756273928