Trong Python 2.6,Tại sao đóng cửa bị phá vỡ trong exec?
>>> exec "print (lambda: a)()" in dict(a=2), {}
2
>>> exec "print (lambda: a)()" in globals(), {'a': 2}
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 1, in <module>
File "<string>", line 1, in <lambda>
NameError: global name 'a' is not defined
>>> exec "print (lambda: a).__closure__" in globals(), {'a': 2}
None
tôi mong đợi nó để in 2
hai lần, và sau đó in một tuple với một đơn cell
. Tình hình tương tự trong 3.1. Chuyện gì vậy?
+1. Tôi đã làm mới chủ đề này một lần mỗi phút kể từ khi nó được đăng để tìm ra câu trả lời cho câu hỏi này. Nhờ bạn, tôi bây giờ được tự do để lại cho tôi một thời gian và đi ra ngoài và tận hưởng ánh nắng mặt trời. Cảm ơn bạn! ;) –