我想检查变量是否存在。现在我正在做这样的事情:
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