В чем преимущество использования присвоения значения по умолчанию параметру функции в python

Python позволяет нам устанавливать значение параметра по умолчанию. Следующий пример взят из Более разумный способ изучить Python пользователем Марк Майерс.

def calc_tax(sales_total,tax_rate=0.04):
    print(sales_total * tax_rate)

Я не понимаю, в чем его польза, когда мы можем это сделать:

def calc_tax(sales_total):
    print(sales_total*0.04)

Что, если вы хотите произвести этот расчет с другой налоговой ставкой…?

deceze 10.09.2018 08:42

Это значение дефолт, и это означает, что его можно изменить, передав другой номер для tax_rate, но при втором подходе tax_rate всегда является 0.04.

ᴀʀᴍᴀɴ 10.09.2018 08:43
6
2
125
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Параметры по умолчанию не зависят от языка и предназначены для помощи программистам. Давайте рассмотрим ваш пример

def calc_tax(sales_total,tax_rate=0.04):
    print(sales_total * tax_rate)

Мы можем назвать функцию как

calc_tax(100)

(Обратите внимание, что мне даже не нужно упоминать 0,04, поскольку функция автоматически принимает значение по умолчанию) а также

calc_tax(100,0.09)

Если в первом случае используется значение по умолчанию tax_rate, то есть 0,04, и вы получите тот же ответ, что и какой

print(sales_total*0.04)

Теперь, если в какой-то момент вы захотите изменить это значение, скажем, на 0,09, тогда с помощью вашего метода нам придется перейти к исходному коду и изменить функцию. Иногда это не совсем возможно или может быть не так просто, как в приведенном вами примере, как в случае, когда эта tax_rate используется в функции несколько раз.

Если вы на 100% уверены, что значение никогда не изменится, например, константы типа pi, то в этом случае они не передаются в параметры функции, но для других случаев проще и эффективнее использовать параметры по умолчанию.

Ответ принят как подходящий

Это потому, что при выполнении:

def calc_tax(sales_total,tax_rate=0.04):
    print(sales_total * tax_rate)

Ты можешь сделать:

calc_tax(100)

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

calc_tax(any thing here,any thing here)

ИЛИ:

calc_tax(any thing here,tax_rate=any thing here)

С другой стороны, этот код:

def calc_tax(sales_total):
    print(sales_total*0.04)

Может только:

calc_tax(any thing here)

Потому что нет второго аргумента

Другие вопросы по теме