Ключевые аргументы в Python с примерами

В этом руководстве вы узнаете об аргументах ключевых слов Python и о том, как их использовать, чтобы сделать вызовы функций более очевидными.

Начнем с простой функции, которая вычисляет чистую цену на основе продажной цены и скидки:

def get_net_price(price, discount):
    return price *(1-discount)

Функция get_net_price() имеет два параметра: price и discount.

Ниже показано, как вызвать функцию get_net_price() для расчета чистой цены на основе цены 100 и скидки 10 %:

net_price = get_net_price(100, 0.1)
print(net_price)

Выход:

90.0

При вызове функции get_net_price(100, 0.1) мы передаем каждый аргумент как позиционный аргумент. Другими словами, сначала мы передаем аргумент price, а затем аргумент discount.

Однако вызов функции get_net_price(100, 0.1) имеет проблемы с читаемостью. Потому что, глядя только на вызов этой функции, вы не знаете, какой аргумент является ценой, а какой — скидкой.

Кроме того, когда вы вызываете функцию get_net_price(), вам необходимо знать позицию каждого аргумента.

Если вы этого не сделаете, функция неправильно рассчитает net_price. Например:

net_price = get_net_price(0.1, 100)
print(net_price)

Выход:

-9.9

Чтобы улучшить читаемость, Python вводит аргументы ключевого слова.

Ниже показан синтаксис аргумента ключевого слова:

fn(parameter1=value1,parameter2=value2)

Используя синтаксис аргумента ключевого слова, вам не нужно указывать аргументы в том же порядке, в котором они определены в функции.

Следовательно, вы можете вызвать функцию, поменяв местами аргументы следующим образом:

fn(parameter2=value2,parameter1=value1)

Ниже показано, как использовать синтаксис аргумента ключевого слова для вызова функции get_net_price():

net_price = get_net_price(price=100, discount=0.1)

Или:

net_price = get_net_price(discount=0.1, price=100)

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

Обратите внимание, что вы можете вызвать функцию, смешав позиционные и ключевые аргументы. Например:

net_price = get_net_price(100, discount=0.1)

Аргументы ключевого слова и параметры по умолчанию

Предположим, что у вас есть следующая функция get_net_price(), которая вычисляет чистую цену на основе цены продажи, налога и скидки.

def get_net_price(price, tax=0.07, discount=0.05):
    return price *(1 + tax - discount)

В функции get_net_price() параметры tax и discount имеют значения по умолчанию 7% и 5% соответственно.

Следующий код вызывает функцию get_net_price() и использует значения по умолчанию для параметров налога и скидки:

net_price = get_net_price(100)
print(net_price)

Выход:

102.0

Предположим, вы хотите использовать значение по умолчанию для параметра налога, но не скидки. Следующий вызов функции работает неправильно.

net_price = get_net_price(100, 0.06)

…потому что Python присвоит 100 цене и 0,1 налогу, а не скидке.

Чтобы это исправить, вы должны использовать аргументы ключевых слов:

net_price = get_net_price(price=100, discount=0.06)
print(net_price)

Выход:

101.0

Или вы можете смешать позиционные и ключевые аргументы:

net_price = get_net_price(100, discount=0.06)
print(net_price)

Выход:

101.0

Требования к аргументам ключевого слова Python

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

Следующий пример приведет к ошибке, поскольку после аргумента ключевого слова используется позиционный аргумент:

net_price = get_net_price(100, tax=0.08, 0.06)

Ошибка:

SyntaxError: positional argument follows keyword argument

Чтобы исправить это, вам нужно использовать аргумент ключевого слова для третьего аргумента следующим образом:

net_price = get_net_price(100, tax=0.08, discount=0.06)
print(net_price)
Похожие посты
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *