It's False
>>> is_none(set())
It's False
122
Глава 4. Корочка Python: структуры кода
Позиционные аргументы
Python довольно гибко обрабатывает аргументы функций в сравнении с многими
языками программирования. Наиболее распространенный тип аргументов — это
позиционные аргументы, чьи значения копируются в соответствующие параметры
согласно порядку следования.
Эта функция создает словарь из позиционных входных аргументов и возвра-
щает его:
>>> def menu(wine, entree, dessert):
... return {'wine': wine, 'entree': entree, 'dessert': dessert}
...
>>> menu('chardonnay', 'chicken', 'cake')
{'dessert': 'cake', 'wine': 'chardonnay', 'entree': 'chicken'}
Несмотря на распространенность аргументов такого типа, у них есть недостаток,
который заключается в том, что вам нужно запоминать значение каждой позиции.
Если бы мы вызвали функцию menu(), передав в качестве последнего аргумента
марку вина, обед вышел бы совершенно другим:
>>> menu('beef', 'bagel', 'bordeaux')
{'dessert': 'bordeaux', 'wine': 'beef', 'entree': 'bagel'}
Аргументы — ключевые слова
Для того чтобы избежать путаницы с позиционными аргументами, вы можете ука-
зать аргументы с помощью имен соответствующих параметров. Порядок следова-
ния аргументов в этом случае может быть иным:
>>> menu(entree='beef', dessert='bagel', wine='bordeaux')
{'dessert': 'bagel', 'wine': 'bordeaux', 'entree': 'beef'}
Вы можете объединять позиционные аргументы и аргументы — ключевые сло-
ва. Сначала выберем вино, а для десерта и основного блюда используем аргумен-
ты — ключевые слова.
>>> menu('frontenac', dessert='flan', entree='fish')
{'entree': 'fish', 'dessert': 'flan', 'wine': 'frontenac'}
Если вы вызываете функцию, имеющую как позиционные аргументы, так и ар-
гументы — ключевые слова, то позиционные аргументы необходимо указывать
первыми.
Указываем значение параметра по умолчанию
Вы можете указать значения по умолчанию для параметров. Значения по умолча-
нию используются в том случае, если вызывающая сторона не предоставила соот-
Функции
123
ветствующий аргумент. Эта приятная особенность может оказаться довольно по-
лезной. Воспользуемся предыдущим примером:
>>> def menu(wine, entree, dessert='pudding'):
... return {'wine': wine, 'entree': entree, 'dessert': dessert}
В этот раз мы вызовем функцию menu(), не передав ей аргумент dessert:
>>> menu('chardonnay', 'chicken')
{'dessert': 'pudding', 'wine': 'chardonnay', 'entree': 'chicken'}