Книга «Изучаем Python»



Pdf көрінісі
бет88/266
Дата03.03.2023
өлшемі7,86 Mb.
#170986
түріКнига
1   ...   84   85   86   87   88   89   90   91   ...   266
Байланысты:
Изучаем Python. Программирование игр, визуализация данных, веб-приложения ( PDFDrive )

141
ПРИМЕЧАНИЕ
Если вы используете значения по умолчанию, все параметры со значением по умолчанию должны 
следовать после параметров, у которых значений по умолчанию нет . Это необходимо для того, 
чтобы 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')
Все вызовы функции выдадут такой же результат, как и в предыдущих примерах.
ПРИМЕЧАНИЕ 
На самом деле не так важно, какой стиль вызова вы используете . Если ваша функция выдает нуж-
ный результат, выберите тот стиль, который вам кажется более понятным .
Предотвращение ошибок в аргументах
Не удивляйтесь, если на первых порах вашей работы с функциями будут встре-
чаться ошибки несоответствия аргументов. Такие ошибки происходят в том слу-
чае, если вы передали меньше или больше аргументов, чем необходимо функции 
для выполнения ее работы. Например, вот что произойдет при попытке вызвать 
describe_pet()
без аргументов:
def describe_pet(animal_type, pet_name):
"""Выводит информацию о животном."""
print("\nI have a " + animal_type + ".")
print("My " + animal_type + "'s name is " + pet_name.title() + ".")
describe_pet()


142
Глава 8 • Функции
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   ...   84   85   86   87   88   89   90   91   ...   266




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

    Басты бет