Python 官方文档:入门教程 => 点击学习
python学习教程(Python学习路线):那些年我们踩过的那些坑。。。坑01 - 整数比较的坑在 Python 中一切都是对象,整数也是对象,在比较两个整数时有两个运算符 == 和 is ,它们的区别是:is 比较的是两个整数对象的id
python学习教程(Python学习路线):那些年我们踩过的那些坑。。。
坑01 - 整数比较的坑
在 Python 中一切都是对象,整数也是对象,在比较两个整数时有两个运算符 == 和 is ,它们的区别是:
知道了is和==的区别之后,我们可以来看看下面的代码,了解Python中整数比较有哪些坑:
def main():x = y = -1while True:x += 1y += 1if x is y:print('%d is %d' % (x, y))else:print('Attention! %d is not %d' % (x, y))breakx = y = 0while True:x -= 1y -= 1if x is y:print('%d is %d' % (x, y))else:print('Attention! %d is not %d' % (x, y))breakif __name__ == '__main__':main()
上面代码的部分运行结果如下图所示,出现这个结果的原因是Python出于对性能的考虑所做的一项优化。对于整数对象,Python把一些频繁使用的整数对象缓存起来,保存到一个叫small_ints的链表中,在Python的整个生命周期内,任何需要引用这些整数对象的地方,都不再重新创建新的对象,而是直接引用缓存中的对象。Python把频繁使用的整数对象的值定在[-5, 256]这个区间,如果需要这个范围的整数,就直接从 small_ints 中获取引用而不是临时创建新的对象。因为大于256或小于-5的整数不在该范围之内,所以就算两个整数的值是一样,但它们是不同的对象。
--结束END--
本文标题: Python学习教程(Python学习路线):那些年我们踩过的那些坑。。。
本文链接: https://www.lsjlt.com/news/229182.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0