2011-01-12 15 views
5

En Python, ¿cuál es la diferencia entre los argumentos que tienen valores por defecto:¿Cuál es la diferencia entre los argumentos con valores predeterminados y argumentos de palabras clave?

def f(a,b,c=1,d=2): pass 

y argumentos clave:

def f(a=1,b=2,c=3): pass 

? Supongo que no hay diferencia, pero el tutorial tiene dos secciones:

4.7.1. Valores de argumento predeterminados

4.7.2. Palabra clave Argumentos

que parece que hay alguna diferencia en ellos. Si es así, ¿por qué no puedo usar esta sintaxis en 2.6:

def pyobj_path(*objs, as_list=False): pass 

?

Respuesta

5

Los argumentos de palabras clave son cómo se llama a una función.

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

Los valores predeterminados son cómo se define una función.

6

Los argumentos predeterminados significan que puede dejar algunos parámetros. En lugar de f(1, 2, 3), puede escribir f(1) o f(1, 2).

Los argumentos de las palabras clave significan que no tiene que ponerlos en el mismo orden que la definición de la función. En lugar de f(1, 2, 3) puede hacer f(c=3, b=2, a=1).

5

*args y/o **kwargs siempre tiene que llegar al final de la lista de argumentos en una declaración de la función, si están presentes. Específicamente:

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

valores por defecto para parámetros se establecen en la definición de la función con def. Se hace pasar esos argumentos opcionales cuando se llama a la función

función con valor por defecto para el último parámetro Definir:

def name_of_function(parameter0, parameter1, default_parameter1 = 'value') 

parámetros con valores por defecto sólo se debe colocar después de los parámetros simples.

la llamada arriba función (Nota: valores de los argumentos de los parámetros con valores por defecto es opcional):

name_of_function(parameter0, parameter1) 

La misma función se llama con argumentos de palabra clave:

name_of_function(parameter1='value1', parameter0='value0') 

argumentos son simples argumentos. Cuando se llama a una función, se pueden suministrar pares nombre-valor de nombre_parámetro = valor en lugar de solo el valor. Esto le permite suministrar los argumentos en una llamada de función en cualquier orden.

Cuestiones relacionadas