6

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

我无法理解这个线程:普通参数与关键字参数

附带说明一下,大多数教程和视频系列似乎都面向Python 2.*。我应该学习Python 3而不是Python 2,还是以后可以轻松过渡?我只是出于好奇而学习这个。

提前致谢。

4

2 回答 2

5

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

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

例子:

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

如果还有不清楚的地方,请告诉我。

于 2012-10-14T07:11:57.727 回答
1

据我所知,人们倾向于互换使用这两个术语

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

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

定义函数时,您可以在脑海中查看它,如下所示:

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

但是,当您尝试调用函数时,通常会使用术语“关键字参数”。

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

function1(positional_argument, keyword_argument="change-output") 
  • 希望这是有道理的*
于 2018-05-20T09:32:16.260 回答