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

количество позиционных аргументов будет сгруппировано в кортеж. В следующем

примере args является кортежем параметров, который был создан из аргументов,

переданных в функцию print_args():

>>> def print_args(*args):

... print('Positional argument tuple:', args)

...

Если вы вызовете функцию без аргументов, то получите пустой кортеж:

>>> print_args()

Positional argument tuple: ()

Все аргументы, которые вы передадите, будут выведены на экран как кортеж

args:

>>> print_args(3, 2, 1, 'wait!', 'uh...')

Positional argument tuple: (3, 2, 1, 'wait!', 'uh...')

Это полезно при написании функций вроде print(), которые принимают про-

извольное количество аргументов. Если в вашей функции имеются также обяза-

тельные позиционные аргументы, *args отправится в конец списка и получит все

остальные аргументы:

>>> def print_more(required1, required2, *args):

... print('Need this one:', required1)

... print('Need this one too:', required2)

... print('All the rest:', args)

...

Функции

125

>>> print_more('cap', 'gloves', 'scarf', 'monocle', 'mustache wax')

Need this one: cap

Need this one too: gloves

All the rest: ('scarf', 'monocle', 'mustache wax')

При использовании * вам не нужно обязательно называть кортеж параметров

args, однако это распространенная идиома в Python.

Получение аргументов — ключевых слов

с помощью **

Вы можете использовать два астериска (**), чтобы сгруппировать аргументы —

ключевые слова в словарь, где имена аргументов станут ключами, а их значения —

соответствующими значениями в словаре. В следующем примере определяется

функция print_kwargs(), в которой выводятся ее аргументы — ключевые слова:

>>> def print_kwargs(**kwargs):

... print('Keyword arguments:', kwargs)

...

Теперь попробуйте вызвать ее, передав несколько аргументов:

>>> print_kwargs(wine='merlot', entree='mutton', dessert='macaroon')

Keyword arguments: {'dessert': 'macaroon', 'wine': 'merlot', 'entree': 'mutton'}

Внутри функции kwargs является словарем.

Если вы используете позиционные аргументы и аргументы — ключевые слова

(*args и **kwargs), они должны следовать в этом же порядке. Как и в случае с args,

вам не обязательно называть этот словарь kwargs, но это опять же является рас-

пространенной практикой.

Строки документации

Дзен Python гласит: удобочитаемость имеет значение. Вы можете прикрепить

документацию к определению функции, включив строку в начало ее тела. Она на-