2011-01-12 103 views
5

在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 

回答

5

关键字参数是您如何调用函数。

f(a=1, b=2, c=3, d=4) 

默认值是如何定义函数。

6

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

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

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

相关问题