>>>> def is_none(thing):
>…·····if thing is None:
>…·········print("It's None")
>…·····elif thing:
>…·········print("It's True")
>…·····else:
>…·········print("It's False")
>…
Теперь выполним несколько проверок:
>>>> is_none(None)
>It's None
>>>> is_none(True)
>It's True
>>>> is_none(False)
>It's False
>>>> is_none(0)
>It's False
>>>> is_none(0.0)
>It's False
>>>> is_none(())
>It's False
>>>> is_none([])
>It's False
>>>> is_none({})
>It's False
>>>> is_none(set())
>It's False
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'}
Если вы вызываете функцию, имеющую как позиционные аргументы, так и аргументы — ключевые слова, то позиционные аргументы необходимо указывать первыми.
Указываем значение параметра по умолчанию
Вы можете указать значения по умолчанию для параметров. Значения по умолчанию используются в том случае, если вызывающая сторона не предоставила соответствующий аргумент. Эта приятная особенность может оказаться довольно полезной. Воспользуемся предыдущим примером:
>>>> def menu(wine, entree, dessert='pudding'):
>…·····return {'wine': wine, 'entree': entree, 'dessert': dessert}