Мне нужно использовать функцию c (myAPI.readArr
), которая возвращает скаляр, numpy.ndarray
или Py_None
при сбое.Проверьте, является ли возвращаемое значение экземпляром Py_None
Это работает для отказа:
data = myAPI.readArr(arg1, arg2)
if not data:
raise Exception("Problem!")
но для действительных аргументов, которые я получаю:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Как я могу проверить, что вызов успешно или нет?
PEP 8 явно рекомендует тестировать 'is None', когда вы имеете в виду' is None', отчасти потому, что многие объекты, кроме 'None', являются ложными, скажем,' False'. Тот факт, что некоторые объекты являются незаконными для проверки на предмет ложности, например массивы NumPy, просто означает, что вы получаете раннее сообщение об ошибке для своей ошибки, а не код, который, кажется, работает до тех пор, пока вы его не разворачиваете, и он бесшумно закручивает ваши данные. :) – abarnert
Я думаю, что [это] (http://stackoverflow.com/questions/14247373/python-none-comparison-should-i-use-is-or) - это канонический ответ, но связанный кажется более прямым ответьте на вопрос ОП. – abarnert