簡體   English   中英

locals()和globals()有什么區別

[英]What's the difference between locals() and globals()

我不明白這段代碼有什么問題。

請讓我知道我怎么寫來解決這個問題。

我以為這可能很好,但是卻導致了錯誤。

>>> def L():
...     for i in range(3):
...             locals()["str" + str(i)] = 1
...     print str0
... 
>>> L()

如果我執行它,則會發生以下錯誤。

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 4, in a
NameError: global name 'str0' is not defined

但是,如果我使用globals() ,則不會發生錯誤(如下所示)

>>> def G():
...     for i in range(3):
...             globals()["str" + str(i)] = 1
...     print str0
... 
>>> G()
1

但!!! 如果我不使用for語句,我可以這樣寫,並且效果很好。

>>> def LL():
...     locals()["str" + str(0)] = 1
...     print str0
... 
>>> LL()
1

我想通過執行上述代碼后使用方法中設置的變量來獲取結果。

>>> str0
1
>>> str1
1
>>> str2
1

從locals()的文檔中

注意:

該字典的內容不得修改; 更改可能不會影響解釋器使用的局部變量和自由變量的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM