Простой Python. современный стиль программирования - читать онлайн бесплатно полную версию книги . Страница 89

>>> is_none({})

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'}