python中的引用是什么意思_Python 中都是引用

大二寒假,在家没事看python,当看到python中数字是不可变的时候,我就看不下去了。如果i = i + 1这样简单的运算都要产生一个新的变量,这是多么低效的啊,明明直接往那块内存写入一个新值不就行了吗。

现在,算是看出来了,这也是必须这么做的,因为这些最Basic的数字和字符串都用引用了。引用的意思就是Share一块存储空间,如果更改了这块存储区的内容,那么所有引用这块存储区的引用变量就都变了,这未免与老祖宗C语言的语义出入太大。

Python中赋值,只是传递引用。

所以,默认都是Shallow Copy。

如果想要做Deep Copy,可以使用copy模块的deepcopy方法。也可以使用对应的工厂方法。另外,对于不可变的对象,即是执行deepcopy也不会真做,因为deepcopy是为了使改变不相互影响,既然不可改变那就没有必要了。

分清楚是Shallow Copy还是Deep Copy很重要,无论是否有GC。例如,C++ STL是Deep Copy, 而python不是。

并且赋值不是表达式。

比较都是基于值的。这consistence很重要。不像java,整形用==号。String却要用equals方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值