默认参数值是否被 Python 视为关键字参数?我无法理解其中的区别
我无法理解这个线程:普通参数与关键字参数
附带说明一下,大多数教程和视频系列似乎都是针对Python 2.* 的。我应该学习Python 3而不是Python 2还是我可以在以后轻松地进行转换?我只是出于好奇而学习这个。
提前致谢。
这两个概念(大部分)是不同的。
在函数定义方面,您已经命名了具有名称的参数,并且您有可变参数扩展,一个用于位置参数(给出一个元组)和一个用于键盘参数(给出一个字典)。
例子:
def f(a, b=5, *c, **d): return a, b, c, d
Run Code Online (Sandbox Code Playgroud)
此函数有两个命名参数 ( aand b),可用于位置或通过关键字。c并d采取所有其他给予。
您可以使用位置参数以及关键字参数调用此函数。
f(1)
f(a=1)
Run Code Online (Sandbox Code Playgroud)
都返回
1, 5, (), {}
Run Code Online (Sandbox Code Playgroud)
因为位置和关键字参数被分配给命名参数。
你也可以这样做
f(a=5, foo=12) or f(5, foo=12) # -> 5, 5, (), {'foo': 12}
f(1, 2, 3) # -> 1, 2, (3,), {}
Run Code Online (Sandbox Code Playgroud)
在最后一个例子中,位置参数 1 和 2 被赋予了命名参数a和b;超出的 3 被放入元组c。
你不能做
f(b=90) # no value for a
f(12, a=90) # two values for a
Run Code Online (Sandbox Code Playgroud)
如果还有不清楚的地方,请告诉我。