python参数传递

给变量以数据,而不是给数据以变量

变量不存在实体,它仅仅是一个标签,一旦赋值就被设置到另一个物体上,不变的是那些物体,即‘对象’。python中所有的东西都是对象,包括函数、类、模块,甚至字符串‘hello',数字1,2,3都是对象。

多看几个例子就明白了~

例:

a=1
b=2
c=1
a=b

a和c指向同一个对象整数1,给a赋值b后,a指向2。1和c都不受影响。

例:

a = 1
print('a', a, id(a))
b = 2
print('b', b, id(b))
c = 1
print('c', c, id(c))
# 再次赋值
a = b
print('a', a, id(a))

输出:

a 1 4301490544

b 2 4301490576

c 1 4301490544

a 2 4301490576

id() 可以认为是获取一个对象的地址。可以看出,a 和 c 开始其实是同一个地址,而后来赋值之后,a 又和 b 是同一个地址。每次给变量重新赋值,它就指向了新的地址,与原来的地址无关了。

例:

a = [1,2,3]

print('a', a, id(a))

b = a

print('b', b, id(b))

b[1] = 5

print('a', a, id(a))

print('b', b, id(b))

输出:

a [1, 2, 3] 4490723464

b [1, 2, 3] 4490723464

a [1, 5, 3] 4490723464

b [1, 5, 3] 4490723464

b 赋值为 a 后,和 a 指向同一个列表对象。[1] 这个基于 index 的赋值是 list 对象本身的一种操作,并没有给 b 重新贴标签,改变的是对象本身。所以 b 指向的还是原来的对象,此对象的改动自然也会体现在 a 身上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值