Welcome to WuJiGu Developer Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
463 views
in Technique[技术] by (71.8m points)

关于 python 中的 is 和对象引用的问题

print(id({'a': 10}), id({'a': 10}))
print({'a': 10} is {'a': 10})

如上代码为什么第一行 id 相同第二行却输出 False?
另外之前学的是 js,内存不是很了解,也就大概知道引用是怎么回事,
以下代码:

print(id({'b': 10}))    ##?3052960
print(id({'b': 10}))    ##?3052960

print(id({'b': 10}))    ##?4429216
a?=?{'b': 10}
print(id(a))            ##?4429216
print(id({'b': 10}))    ##?4429296

为什么会出现这种现象,为什么引用一次之后地址就变了?
望大佬指点,先谢过!


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)
#第一个{'a': 10}执行完id后被释放,第二个{'a': 10}是复用第一个的
print(id({'a': 10}), id({'a': 10}))
#两个{'a': 10}都要执行完is后才能释放 不能被复用
print({'a': 10} is {'a': 10})
#同理,a没有被释放,最后的{'b': 10}不能复用前面的a
print(id({'b': 10}))    ##?4429216
a?=?{'b': 10}
print(id(a))            ##?4429216
print(id({'b': 10}))    ##?4429296

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to WuJiGu Developer Q&A Community for programmer and developer-Open, Learning and Share

2.1m questions

2.1m answers

62 comments

56.6k users

...