a = id(1) , b = id(1) , a==b 是True,为何a is b 是False?

来源:5-11 身份运算符

慕粉43596301

2020-01-23

老师好。
a = 1 , b = 1 , a is b 是True。–>说明数值1的内存地址是相同的
a = id(1) , b = id(1) , a==b 是True。–>说明数值1的内存地址是相同的
a is b 为什么是 False??
————————————
数字和字符串类型时:值相同,内存地址也相同,这个规律成立吗?

写回答

1回答

7七月

2020-01-24

较小的整数是成立的,但是字符串是 不成立的

1
3
慕粉43596301
回复
7七月
嗯。搜索结果如下,分享下: Python为了优化速度,使用了小整数对象池, 避免为整数频繁申请和销毁内存空间。Python 对小整数的定义是 [-5, 256] 这些整数对象是提前建立好的,不会被垃圾回收。在一个 Python 的程序中,无论这个整数处于LEGB中的哪个位置,所有位于这个范围内的整数使用的都是同一个对象。同理,单个字母也是这样的。
2020-01-24
共3条回复

Python3.8系统入门+进阶 (程序员必备第二语言)

语法精讲/配套练习+思考题/原生爬虫实战

14649 学习 · 4478 问题

查看课程