【问题标题】:What is the benefit of using assigning a default value to a parameter in a function in python在python的函数中使用为参数分配默认值有什么好处
【发布时间】:2019-02-14 13:36:53
【问题描述】:

默认情况下,Python 允许我们为参数设置值。以下示例摘自Mark MyersA smarter way to learn 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)

【问题讨论】:

  • 如果你想用不同的税率进行计算怎么办……?
  • 这是 default 值,这意味着可以通过为tax_rate 传递另一个数字来更改它,但在第二种方法中,tax_rate 始终是0.04

标签: python function default-value


【解决方案1】:

默认参数是一种与语言无关的功能,旨在帮助程序员。 让我们看看你的例子

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 这样的常量,那么在这种情况下,它们不会传递到函数参数中,但对于其他情况,使用默认参数既简单又高效。

【讨论】:

    【解决方案2】:

    因为在做的时候:

    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)
    

    因为没有第二个参数

    【讨论】:

      猜你喜欢
      • 2011-03-27
      • 1970-01-01
      • 2018-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多