150
Глава 8 • Функции
ПРИМЕЧАНИЕ
На самом деле не так важно, какой стиль вызова вы используете . Если
ваша функция выдает нужный результат, выберите тот стиль, который вам кажется
более понятным .
Предотвращение ошибок в аргументах
Не удивляйтесь, если на первых порах вашей работы с функциями будут встре-
чаться ошибки несоответствия аргументов. Такие ошибки происходят в том слу-
чае, если вы передали меньше или больше аргументов, чем необходимо функции
для выполнения ее работы. Например, вот что произойдет при попытке вызвать
describe_pet()
без аргументов:
def describe_pet(animal_type, pet_name):
"""Выводит информацию о животном."""
print(f"\nI have a {animal_type}.")
print(f"My {animal_type}'s name is {pet_name.title()}.")
describe_pet()
Python понимает, что при вызове функции часть информации отсутствует, и мы
видим это в данных трассировки:
Traceback (most recent call last):
❶
File "pets.py", line 6, in
❷
describe_pet()
❸
TypeError: describe_pet() missing 2 required positional arguments: 'animal_
type' and 'pet_name'
В точке
сообщается местонахождение проблемы, чтобы вы поняли, что с вызовом
функции что-то пошло не так. В точке
приводится вызов функции, приведший
к ошибке. В точке
Python сообщает, что при вызове пропущены два аргумента,
и сообщает имена этих аргументов. Если бы функция размещалась в отдельном
файле, вероятно, вы смогли бы исправить вызов и вам не пришлось бы открывать
этот файл и читать код функции.
Python помогает еще и тем, что он читает код функции и сообщает имена аргумен-
тов, которые необходимо передать при вызове. Это еще одна причина для того,
чтобы присваивать переменным и функциям содержательные имена. В этом случае
сообщения об ошибках Python принесут больше пользы как вам, так и любому
другому разработчику, который будет использовать ваш код.
Если при вызове будут переданы лишние аргументы, вы получите похожую трасси-
ровку, которая поможет привести вызов функции в соответствие с ее определением.
Достарыңызбен бөлісу: