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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值