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

kol*_*pto 6 python syntax

在Python中,具有默认值的参数之间的区别是什么:

def f(a,b,c=1,d=2): pass
Run Code Online (Sandbox Code Playgroud)

和关键字参数:

def f(a=1,b=2,c=3): pass
Run Code Online (Sandbox Code Playgroud)

?我想这没什么区别,但是教程有两个部分:

4.7.1.默认参数值

4.7.2.关键字参数

这听起来有些不同.如果是这样,为什么我不能在2.6中使用这种语法:

def pyobj_path(*objs, as_list=False): pass
Run Code Online (Sandbox Code Playgroud)

Mik*_*kel 9

默认参数意味着您可以保留一些参数.而不是f(1, 2, 3)你可以写f(1)f(1, 2).

关键字参数意味着您不必将它们放在与函数定义相同的顺序中.而不是f(1, 2, 3)你能做到的f(c=3, b=2, a=1).


S.L*_*ott 7

关键字参数是您调用函数的方式.

f( a=1, b=2, c=3, d=4 )
Run Code Online (Sandbox Code Playgroud)

默认值是函数的定义方式.


Amb*_*ber 5

*args和/或**kwargs必须始终位于函数声明中参数列表的末尾(如果它们存在).特别:

def <function name>(
        [<args without defaults>,]
        [<args with defaults>,]
        [*<variable length positional argument list name>,]
        [**<arbitrary keyward argument dict name>]
    ):
    <function body>
Run Code Online (Sandbox Code Playgroud)