Python:如何检查变量是否已经声明

Python:如何检查变量是否已经声明,python,variables,declaration,Python,Variables,Declaration,在处理许多if/elif/else时,如果已经声明了一个变量,我有时会丢失一个跟踪。我想知道一种检查变量foo是否已经声明的简单方法。最简单的语法是什么 另外,看到如何使用globals()和locals()来实现这一点很有趣 编辑: 我最终使用了: if not 'myVariableName' in globals().keys(): myVariableName='someValue' 很难跟踪/ifapp=QtGui.QApplication(sys.argv)已在何时何地声明,特别是

在处理许多if/elif/else时,如果已经声明了一个变量,我有时会丢失一个跟踪。我想知道一种检查变量foo是否已经声明的简单方法。最简单的语法是什么

另外,看到如何使用globals()和locals()来实现这一点很有趣

编辑: 我最终使用了:

if not 'myVariableName' in globals().keys(): myVariableName='someValue'
很难跟踪/ifapp=QtGui.QApplication(sys.argv)已在何时何地声明,特别是在一个gui模块调用另一个gui模块,反之亦然的情况下


如果globals()中的“app”(似乎)有助于避免意外的变量重新声明。

与其担心是否声明了变量,不如从一开始就声明所有变量。您可以给变量一些值,以指示它仍处于初始状态,例如

try:
   foo
except NameError:
   # does not exist
else:
   # does exist
foo = None 
或者,如果要将
None
用于其他目的,可以创建一个唯一的值来指示初始状态,例如

INITIAL = object()
foo = INITIAL
稍后,如果需要检查变量是否已设置,则可以使用
if

if foo == INITIAL:
我认为这样做的主要好处是

  • 您永远不会意外地引发名称错误
  • 在代码中有一个地方,所有变量都在那里 介绍,所以代码的读者不必想知道 变量在起作用

  • 顺便说一句,在
    \uuuu init\uuuu
    中定义所有实例属性也是一个好主意,因此实例可能具有哪些属性是毫无疑问的