Есть ли функция, которая будет возвращать true, если some_function возвращает ошибку?

1
Alex Gordon 31 Июл 2010 в 02:48

4 ответа

Лучший ответ

Есть моменты, когда вы хотите спросить, является ли объект исключением (например, когда вы получаете результат задачи из процесса типа сельдерея). Вы можете сделать это используя:

isinstance(x, Exception)

1
Maximilian 23 Фев 2015 в 18:49

В Python вы делаете проверку ошибок с исключениями:

try:
    some_function()
except Exception:
    print "error"

Вам нужно определить some_function () для raise Exception, если произошла ошибка.

2
Ian Wetherbee 30 Июл 2010 в 22:51

Нет, вы делаете try..except ErrorType как e: , а затем, если вы вводите обработчик исключений, вы знаете, что выбранный вами тип ошибки произошел. Встроенные исключения

Чтобы сравнить две строки, содержащие оба числа с одинаковым количеством десятичных знаков, вы можете сделать:

print ("%20s" % first) >= ("%20s" % second)

Более общий способ - сделать нормальное сравнение, но для равенства использовать абсолютное значение сравнения различий.

numbers= ("1.2","1.3")
a,b= (float(num) for num in numbers)
print("Bigger or equal" if a>b else "Smaller")
2
Tony Veijalainen 30 Июл 2010 в 23:14

Нет. Python использует исключения для обработки ошибок, которые перехватываются с помощью блоков try...catch.

Другими словами, как вы определяете ошибку? False ? Null ? "" ?

Редактировать:

Чтобы ответить на ваш вопрос в комментарии, нет четко определенного способа сравнения, скажем, "1.1" и "1.2". Это сделано намеренно, потому что у нет очевидного порядка в строках . Теперь фактически Python поддерживает сравнение строк, но он использует лексикографическое (алфавитное) упорядочение, а это не то, что вам нужно. Это потому, что эти строки являются семантически float s - они представляют числа. Теперь реальная проблема заключается в том, что они не должны были быть строками в первую очередь (потому что они числа!), Но иногда вы не можете это исправить. Вместо этого, превратите их в числа:

float(1.1) > float(1.2)
4
Katriel 30 Июл 2010 в 22:56