python is运算_Python中的is运算符

查了挺久资料,有了自己的理解,记一下

首先要铺垫一些python的知识

对象(object)三要素

分别是id,type,value 大家都知道,当我们定义一个对象时,编译器会为该对象在内存池开辟相应的内存空间,而id就是这块内存的内存地址,可以通过id()获取。 type是数据类型(class),可以通过type()函数获取。 value便是这个对象的值。

可变类型与不可变类型

在python中,整数、浮点数、复数、字符串、元组都是不可变类型 即该类型的对象一旦创建了,就不能修改。 有人可能会问了

a = 1

a = 2

这a不是整数(不可变类型)吗,不是修改了吗? 其实a并不是对象,可以理解为指针,

而is判断的就是两个对象id是否相同,也就是判断两个对象在内存中是不是就是一个对象。 这样说可能有点懵,我们看下实例:

a = 1

b = 1

print(a is b)

这里的输出结果是True。为什么呢?明明是两个不同的变量啊。 其实不然。变量标识符不同,并不代表这两个不是同个对象

就好像李华,在家里妈妈喜欢叫他小华,在单位同事叫他老李,其实都是同个人,只是叫法不一样罢了。

那在Python中如何判断两个对象是不是同个对象呢? 很简单,就是用对象的id,两个变量指向的对象id相同,便是同个对象。

那为什么不可变类型数值(value)相同就会是同个对象呢? 这句话其实不全对。只有在同个函数内创建的相同值的不可变类型对象时,python才会使用先前已经创建的值相同的对象,因为不可变类型的对象是不能修改的,不必担心对象的修改影响到其他变量,所以python采用了这种方法节省内存。

def create():

a = ("A", "B")

return a

def create2():

a = ("A", "B")

return a

A = ("A", "B")

D = ("A", "B")

c = create2()

b = create()

d = create2()

print(A is D)  # True

print(A is b)  # False

print(b is c)  # False

print(c is d)  # True

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值