В очень хорошо написанной замечательной книге Роберта Смоллшира и Остина Бингема есть следующий код:
def convert(s):
"""Convert a string to an integer."""
try:
return int(s)
except (ValueError, TypeError) as e:
print("Conversion error: {}".format(str(e)), file=sys.stderr)
raise
после этого автор включил следующую функцию string_log
def string_log(s):
v = convert(s)
return log(v)
и вывод string_log('ouch')
выглядит следующим образом
Я не могу понять, какой оператор повышения точно работает?
Кроме того, автор говорит, что код, в котором первая функция выводит отрицательный код ошибки -1 в случае ValueError
и TypeError
, т.е. первая функция будет выглядеть следующим образом
import sys
def convert(s):
"""Convert a string to an integer."""
try:
return int(s)
except (ValueError, TypeError) as e:
print("Conversion error: {}".format(str(e)), file=sys.stderr)
return -1
и чем если мы запустим следующее (без внесения каких-либо изменений string_log()
) будет string_log('cat')
Является непитоновским, но почему?
raise
без аргументов, или вы спрашиваете, почему создание исключения предпочтительнее, чем возврат специального значения? - person chepner   schedule 28.07.2021