2012-10-14 72 views

回答

1

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

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

实施例:

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 

如果还有unclearities,请让我知道。