【问题标题】:Check an unknown type of argument检查未知类型的参数
【发布时间】:2020-08-01 08:00:57
【问题描述】:

我将一个参数(假设是变量'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

【问题讨论】:

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


    【解决方案1】:

    使用is 代替==

    if a is None:
         do this
    else:
         do that
    

    【讨论】:

      【解决方案2】:
      if isinstance(a, np.ndarray):
          ...
      else:
          ...
      

      if type(a) is np.ndarray:
          ...
      else:
          ...
      

      if a is None:
          ...
      else:
          ...
      

      它们都会起作用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-22
        • 2011-05-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多