М97 Изучаем Python: программирование игр, визуализация данных, веб-приложения



Pdf көрінісі
бет112/334
Дата18.10.2023
өлшемі6,19 Mb.
#186390
1   ...   108   109   110   111   112   113   114   115   ...   334
Байланысты:
Изучаем Python

ПРИМЕЧАНИЕ
Если вы используете значения по умолчанию, все параметры со зна-
чением по умолчанию должны следовать после параметров, у которых значений по 
умолчанию нет . Это необходимо для того, чтобы Python правильно интерпретировал 
позиционные аргументы .
Эквивалентные вызовы функций
Так как позиционные аргументы, именованные аргументы и значения по умолча-
нию могут использоваться одновременно, часто существуют несколько эквива-
лентных способов вызова функций. Возьмем следующий оператор 
describe_pets()
с одним значением по умолчанию:
def describe_pet(pet_name, animal_type='dog'):
При таком определении аргумент для параметра 
pet_name
должен задаваться в лю-
бом случае, но это значение может передаваться как в позиционном, так и в име-
нованном формате. Если описываемое животное не является собакой, то аргумент 
animal_type
тоже должен быть включен в вызов, и этот аргумент тоже может быть 
задан как в позиционном, так и в именованном формате.
Все следующие вызовы являются допустимыми для данной функции:
# Пес по имени Вилли.
describe_pet('willie')
describe_pet(pet_name='willie')
# Хомяк по имени Гарри. 
describe_pet('harry', 'hamster')
describe_pet(pet_name='harry', animal_type='hamster')
describe_pet(animal_type='hamster', pet_name='harry')
Все вызовы функции выдадут такой же результат, как и в предыдущих примерах.


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 принесут больше пользы как вам, так и любому 
другому разработчику, который будет использовать ваш код.
Если при вызове будут переданы лишние аргументы, вы получите похожую трасси-
ровку, которая поможет привести вызов функции в соответствие с ее определением.


Достарыңызбен бөлісу:
1   ...   108   109   110   111   112   113   114   115   ...   334




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет