python – 如何检查变量是否存在?

我想检查一个变量是否存在。现在我正在做这样的事情:

try:
   myVar
except NameError:
   # Do something.

还有其他方法没有例外吗?


检查局部变量的存在:

if 'myVar' in locals():
  # myVar exists.

检查是否存在全局变量:

if 'myVar' in globals():
  # myVar exists.

要检查对象是否具有属性:

if hasattr(obj, 'attr_name'):
  # obj.attr_name exists.

使用未定义或设置(隐式或显式)的变量在任何语言中几乎总是一件坏事,因为它表示程序的逻辑没有经过正确的思考,并可能导致不可预测性行为。

以下技巧与您的技巧类似,它将确保变量在使用前具有一定的价值:

try:
    myVar
except NameError:
    myVar = None
# Now you're free to use myVar without Python complaining.

但是,我仍然认为这不是一个好主意 – 在我看来,您应该重构代码以避免这种情况发生。


使用try / except是测试变量存在的最好方法。但是,除了设置/测试全局变量之外,几乎可以肯定有更好的方法来做你正在做的事情。

例如,如果您想在第一次调用某个函数时初始化模块级别的变量,那么最好使用如下所示的代码:

my_variable = None

def InitMyVariable():
  global my_variable
  if my_variable is None:
    my_variable = ...

对于对象/模块,您也可以

'var' in dir(obj)

例如,

>>> class Something(object):
...     pass
...
>>> c = Something()
>>> c.a = 1
>>> 'a' in dir(c)
True
>>> 'b' in dir(c)
False

首先说一个简单的方法就是初始化它 myVar = None

接下来:

if myVar is not None:
    # Do something

添加评论

友情链接:蝴蝶教程