检查未知类型的参数

时间:2020-04-18 19:25:31

标签: python python-3.x if-statement numpy-ndarray nonetype

我正在将参数(比如说变量'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

2 个答案:

答案 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:
    ...

它们都会起作用。