if 'a' in dir():
print('yes')
else:
print('no')
# prints 'no' because we haven't defined any variable a
a = np.array([1,2,3])
if 'a' in dir():
print('yes')
else:
print('no')
# prints 'yes' because I defined it
del a
if 'a' in dir():
print('yes')
else:
print('no')
# prints 'no' because I deleted the variable again
5条答案
按热度按时间fkvaft9z1#
你需要使用一个try/except块:
正如@padraic指出的,这真的不应该发生在首位。最好初始化你的变量(例如:
a = None
),然后检查它们是否已设置(例如,if a: print('a is set') else: print('a has not been set')
)u7up0aaq2#
Python有一些内置函数可以检查变量是否在当前/局部/全局范围内赋值。
例如,要检查变量是否在当前局部范围中定义,请使用:用途:
但这不是好的python,
try/except
更常见,但为了完整起见,我认为值得一提的是,你可以不使用任何try/except。另外值得一提的是
locals
和globals
。z5btuh9x3#
如果你想确保
a
是一个numpy
数组,而不是任何其他可能有size
变量或方法的类型,你可以在try块中检查类型warped,以处理变量未定义时的异常。这样,只有当a
存在并且是numpy
数组时才继续。8iwquhpp4#
使用
try/except NameError
Package 器是很好的Python。但是,事先将变量初始化为有用的东西也同样好。我不认为在速度上有太大的差异,但代码更具可读性。举例来说:
将产生
可以用以下方法捕获:
但我可以更早地定义
a
。如果我事先不知道a
的第一个值应该是什么,None
是一个方便的值:另一个常见的
numpy
实践是从一个空列表开始,并在那里累积值。rwqw0loc5#
短语“is not None”是确定数组存在或不存在的一个很好的概括。