Python is 亲手敲出和网上相反的结论怎么办?网上的结论不可瞎抄! 理论和实际的正确往往不是我们看到的那么简单

# python3.7 win pycharm
# is 与==相似 判断,当内容相同,且地址相同时返回true
is1 = [4,5,6]
print(id(is1))
is1 = [5,6,7]
is2 = [5,6,7]
print(id(is1),id(is2))
is3 = is2
is4 = 1
is4 = 1000
is5 = 1000
is7 = (7,8,9)
is8 = (7,8,9)
is9 = "aaa"
is9 = "bbb"
is10 = "bbb"
print(is1 is is2, is2 is is3, is4 is is5, is7 is is8, is9 is is10) #输出false true

结果为:

1758016575944
1758016575816 1758016575944
False True True True True

 

是否发现与网上一些图给的结论不一样?真相是什么?我们来继续看。

isdemo.py

#python2.7 linux
 isa = 1
 print id(isa)
 isa = 1000
 print id(isa)
 isb = 1000
 print id(isb)
 print isa is isb

2.7在执行脚本里和3.7是一样的True

重点来啦,网上的大多数文章会告诉你下面这个结论,我自己跑也会出这个结论:False

 

为什么之前2个脚本跑都是True,到了这里却是False?

我们会发现前2种(python3.7 和 pyhton2.7脚本执行)情况下,后一个(b)的地址会被分配给前一个改后的地址(a),而在python >>> 这种情况下系统会分配一个额外的地址给后一个(b)。

结论:用脚本跑python,和直接python进去敲python,对于 is 的判断结果是不同的

总结:敲代码的时候别只看网上的结论,理论正确,不等于实际正确。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值