如何仅在未定义的情况下初始化全局变量?

use*_*877 5 python dictionary global

我有一个全局字典变量,它将在被多次调用的函数中使用。我无法控制何时调用函数,也无法控制我正在编写的函数之外的范围。仅当变量未初始化时,我才需要对其进行初始化。初始化后,我将向其添加值。

global dict
if dict is None:
    dict = {}

dict[lldb.thread.GetThreadID()] = dict[lldb.thread.GetThreadID()] + 1
Run Code Online (Sandbox Code Playgroud)

不幸的是,我得到

NameError: global name 'dict' is not defined
Run Code Online (Sandbox Code Playgroud)

我知道我应该定义变量,但是由于这段代码被多次调用,dict = {}所以我只是说每次调用代码时我都会重新定义变量,除非我能以某种方式检查它是否未定义,并且只定义它然后。

Adi*_*rio 10

捕获错误:

try:
    _ = myDict
except NameError:
    global myDict
    myDict = {}
Run Code Online (Sandbox Code Playgroud)

重要的提示:

不要使用dict或任何其他内置类型的变量名。

  • 致OP:底部的注释非常重要 (4认同)
  • @PaulH - 特别是因为你必须做一些非常可怕的事情才能让名字`dict`引发`NameError`...... (2认同)