默认参数值和关键字参数之间的区别?

时间:2012-10-14 02:51:02

标签: python

python是否将默认参数值视为关键字参数?我无法理解这种区别

我无法理解这个帖子Python normal arguments vs. keyword arguments

另外,大多数教程和视频系列似乎都面向python 2. *。我应该学习python 3而不是python 2,或者我可以轻松地进行转换。我只是出于好奇而学习这个。

提前致谢。

2 个答案:

答案 0 :(得分:3)

这两个概念(大部分)都是截然不同的。

在函数定义方面,您已经命名了具有名称的参数,并且您具有可变参数扩展,一个用于位置参数(给出一个元组),另一个用于键盘参数(给出一个dict)。

示例:

def f(a, b=5, *c, **d): return a, b, c, d

此函数有两个命名参数(ab),可以使用位置或通过关键字。 cd取得所有其他人。

您可以使用位置参数和关键字参数调用此函数。

f(1)
f(a=1)

都返回

1, 5, (), {}

因为已将位置和关键字参数分配给命名参数。

您也可以

f(a=5, foo=12) or f(5, foo=12) # -> 5, 5, (), {'foo': 12}
f(1, 2, 3) # -> 1, 2, (3,), {}

在最后一个例子中,位置参数1和2被赋予命名参数ab;超过3被放入元组c

你做不到

f(b=90) # no value for a
f(12, a=90) # two values for a

如果仍然不清楚,请告诉我。

答案 1 :(得分:0)

从我看来,人们倾向于互换使用这两个词

我看到这个问题已经很老了,但无论如何都会增加我的两美分。

术语Default-Arguments(a.k.a“Default-Parameters”)是您在 定义 您的函数时通常使用的术语;在def语句的标题内:

定义你的功能时,你可以在脑中查看 ,如下所示:

def function1(positional_parameter, default_parameter="default-output"):
    pass

但是,当您尝试 调用 某个功能时,通常会使用“关键字参数”一词。

调用该函数时,您可以在脑中查看 ,如下所示:

function1(positional_argument, keyword_argument="change-output") 
  • 希望这有意义*