在Python中,具有默认值的参数之间的区别是什么:
def f(a,b,c=1,d=2): pass
和关键字参数:
def f(a=1,b=2,c=3): pass
?我想没有区别,但tutorial有两个部分:
4.7.1。默认参数值
4.7.2。关键字参数
听起来有些不同。如果是这样,为什么我不能在2.6中使用这种语法:
def pyobj_path(*objs, as_list=False): pass
答案 0 :(得分:8)
默认参数意味着您可以保留一些参数。您只需撰写f(1, 2, 3)
或f(1)
。
f(1, 2)
关键字参数意味着您不必将它们按照与函数定义相同的顺序放置。您可以f(1, 2, 3)
代替f(c=3, b=2, a=1)
。
答案 1 :(得分:6)
关键字参数是您调用函数的方式。
f( a=1, b=2, c=3, d=4 )
默认值是函数的定义方式。
答案 2 :(得分:5)
*args
和/或**kwargs
必须始终位于函数声明中参数列表的 end (如果存在)。具体做法是:
def <function name>(
[<args without defaults>,]
[<args with defaults>,]
[*<variable length positional argument list name>,]
[**<arbitrary keyward argument dict name>]
):
<function body>
答案 3 :(得分:0)
使用 def 定义函数时,会设置参数的默认值。它使得在调用函数
时传递这些参数是可选的使用最后一个参数的默认值定义函数:
def name_of_function(parameter0, parameter1, default_parameter1 = 'value')
具有默认值的参数只能放在简单参数之后。
调用上面的函数(注意:具有默认值的参数的参数值是可选的):
name_of_function(parameter0, parameter1)
使用关键字参数调用相同的函数:
name_of_function(parameter1='value1', parameter0='value0')
关键字参数是简单的参数。调用函数时,可以提供parameter_name = value的名称 - 值对,而不仅仅是值。这允许您以任何顺序在函数调用中提供参数。