我正在将参数(比如说变量'a')传递给函数,并且该变量可以等于None或为np.array。
# Option 1
a = None
# Option 2
a = np.array(range(0,10))
根据等于,我想做不同的事情。
这就是我所做的:
if a == None:
do this
else:
do that
此问题是np.array不能等于None,我得到以下消息: “ ValueError:具有多个元素的数组的真值不明确。请使用a.any()或a.all()”
但是,如果我使用a.any()或a.all()且a = None,则会弹出另一个错误,因为None没有属性'any'或'all'。
我怎样才能很好地解决此问题?
我尝试了以下方法,但是似乎必须有比复制代码更好的方法,否则我错了吗?
try:
if a == None:
do this
else:
do that
except:
if a.any() == None:
do this
else:
do that
答案 0 :(得分:1)
使用is
代替==
:
if a is None:
do this
else:
do that
答案 1 :(得分:1)
if isinstance(a, np.ndarray):
...
else:
...
或
if type(a) is np.ndarray:
...
else:
...
或
if a is None:
...
else:
...
它们都会起作用。