Я просматривал https://github.com/python/cpython/blob/master/Lib/datetime.py и наткнулся на некоторые функции проверки типов (я упростил их, оригинал _check_int_field)
def foo(year, month, day):
year = check_int(year)
month = check_int(month)
day = check_int(day)
check_int возвращает введенное значение (если это целое число) -и вызывает ValueError, если это не так. Позвольте мне сократить функцию, которую они использовали:
def check_int(value):
if isinstance(value, int):
return value
if not isinstance(value, int):
raise TypeError('integer argument expected, got %s' % type(value))
Мой вопрос: в чем смысл выражения return? Конечно, вы могли бы просто реализовать его как
def check_int(value):
if not isinstance(value, int):
raise TypeError('integer argument expected, got %s' % value)
Это изменит функцию foo на (где вам не нужно будет определять переменные, а просто использовать аргументы foo)
def foo(year, month, day):
check_int(year)
check_int(month)
check_int(day)
Это вызовет TypeError, если тип ввода неверен - и просто продолжит работу с аргументами функции, если нет, без необходимости определения каких-либо переменных. Так почему же они возвращают входную переменную, если не изменяют ее, а просто проверяют?