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

try:
    myVar
except NameError:
    # Do something.

有没有其他没有例外的方法?


当前回答

使用try/except是测试变量是否存在的最佳方法。但是几乎可以肯定有比设置/测试全局变量更好的方法。

例如,如果你想在第一次调用某个函数时初始化一个模块级变量,你最好使用这样的代码:

my_variable = None

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

其他回答

使用try/except是测试变量是否存在的最佳方法。但是几乎可以肯定有比设置/测试全局变量更好的方法。

例如,如果你想在第一次调用某个函数时初始化一个模块级变量,你最好使用这样的代码:

my_variable = None

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

查询一个局部变量是否存在。

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

检查全局变量是否存在:

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

检查一个对象是否有属性:

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

catch被调用,除非在Python中。除此之外,对于这种简单的情况,它是可以接受的。AttributeError可以用来检查对象是否有属性。

一种简单的方法是在初始化时输入myVar = None

后来:

if myVar is not None:
    # Do something

简短的变体:

my_var = some_value if 'my_var' not in globals() else my_var: