您如何知道一个变量是否在运行时在代码的特定位置设置了?这并不总是显而易见的,因为(1)变量可以有条件地设置,(2)变量可以有条件地删除。我在寻找像定义()在Perl或isset()在PHP或定义?在Ruby中。
if condition:
a = 42
# is "a" defined here?
if other_condition:
del a
# is "a" defined here?
您如何知道一个变量是否在运行时在代码的特定位置设置了?这并不总是显而易见的,因为(1)变量可以有条件地设置,(2)变量可以有条件地删除。我在寻找像定义()在Perl或isset()在PHP或定义?在Ruby中。
if condition:
a = 42
# is "a" defined here?
if other_condition:
del a
# is "a" defined here?
当前回答
对于这种特殊情况,最好执行a = None而不是del a。这将减少分配给对象a(如果有)的引用计数,并且当a没有定义时不会失败。注意,del语句并不直接调用对象的析构函数,而是将其与变量解绑定。当引用计数为零时,调用对象的析构函数。
其他回答
我觉得最好还是避免这种情况。这样写会更清晰明了:
a = None
if condition:
a = 42
对于这种特殊情况,最好执行a = None而不是del a。这将减少分配给对象a(如果有)的引用计数,并且当a没有定义时不会失败。注意,del语句并不直接调用对象的析构函数,而是将其与变量解绑定。当引用计数为零时,调用对象的析构函数。
vars()中的'a'或globals()中的'a'
如果你想要学究,你也可以检查内置 vars中的'a' (__builtins__)
try:
thevariable
except NameError:
print("well, it WASN'T defined after all!")
else:
print("sure, it was defined.")
try:
a # does a exist in the current namespace
except NameError:
a = 10 # nope