Python, проверка аргументов метода

Получаю ошибку:

The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

Код:

def test(file):
  if not file:
    raise IoError

Вызываем, как:

import cv2
file = cv2.imread("1.png")
test(file)

Причина ясна, imread вернет массив numpy.

Но как сделать проверку в методе, что в переменной что-то есть. Желательно, сохранить возможность вызывать метод так:

test("string")

Желательно, так-как в реальных условиях код выглядит так:

def method(type="camera", file):
  if type !="camera" and not file:
    raise IoError

То есть, вот такую проверку нужно провернуть.


Ответы (1 шт):

Автор решения: GrAnd

Можете сделать проверку в зависимости от типа входной переменной.

import numpy as np

def test(value):
    if isinstance(value, np.ndarray):
        if not value.size:
            raise IoError
    elif not value:
        raise IoError
→ Ссылка