python tips

Python里,万物皆为对象,当您输入或者写好一个Python的HelloWorld程序的时候,你已经在创造了属于这个World的一个甚至多个对象了。

虽然,Python提供了很好的内存管理机制,但是,作为一个好的理解,我们仍然需要弄清楚一些细节,就比如下面这个。

>>> a=['eye','nose','mouth','ear','throat']
>>> b=a
>>> c=a[0:]

>>> print a
['eye', 'nose', 'mouth', 'ear', 'throat']
>>> print b
['eye', 'nose', 'mouth', 'ear', 'throat']
>>> print c
['eye', 'nose', 'mouth', 'ear', 'throat']
>>> a==b
True
>>> a==c
True
>>> a is b
True
>>> a is c
False


如果您已经键入了以上代码,那么可以发现这样一个事实,每个Python对象仍然需要我们注意它的不同之处,那就是内存地址。当我们写"b=a"时,实际上是相当于java的引用计数+1,即有两个名称引用了一个对象实例,用id()内建函数可以发现a和b的地址是一样的。因此,不仅a==b返回True,而且a就是b(“a is b”亦返回True)。
而通过列表的复制操作得到的新对象c,那可真是一个新的东西,虽然内容和a一样的,但地址是不一样的,是两个不同的对象。因此“a==b”返回True,而“a is b”返回False。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值