协慌网

登录 贡献 社区

如何检查变量是否存在?

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

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.

但是,我仍然认为这不是一个好主意 - 在我看来,你应该重构你的代码,以便不会发生这种情况。

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

然后是:

if myVar is not None:
    # Do something