带有默认值和关键字参数的参数之间有什么区别?

时间:2011-01-12 01:48:54

标签: python syntax

在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

4 个答案:

答案 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的名称 - 值对,而不仅仅是值。这允许您以任何顺序在函数调用中提供参数。