python变量问题总结

总结下篇python定义函数的变量问题:

1、可变类型:值可以修改,内存地址引用时可以修改。

2、不可变类型:值不能修改,引用可以修改(=赋值时)。

def test1(x,y):
    x.replace("h","H")
    y.append(4)
    print('x的内存地址为%s'%id(x))
    print("y的内存地址为%s"%id(y))


a = "hello"
b = [1, 2, 3]
print("a的内存地址为%s:"%id(a))
print("b的内存地址为%s:"%id(b))
test1(a,b)

执行结果可看出内存地址:

a的内存地址为317178704
b的内存地址为433189576
x的内存地址为317178704

y的内存地址为433189576

a = x,b=y

这里a为字符串,为不可变类型,所以执行replace操作内存地址没有变化。

那么为什么b列表地址也没变呢?

原因是在执行代码时,y只有append函数,并没有将y.append赋值于y,我们将:

y = y.append([4])

再看下执行后内存变化:

a的内存地址为315147648
b的内存地址为432009928
x的内存地址为315147648
y的内存地址为1939926136

猜你喜欢

转载自blog.csdn.net/weixin_42446330/article/details/80795657