Ese texto que cita es para la definición de la función y no tiene nada que ver con las llamadas a la función. En el llame al a esa función, está usando la función "argumento nombrado". Ese enlace que proporcionas no es de muy buena calidad, los autores parecen confundidos entre dos cosas diferentes.
La referencia de Python se refiere a los argumentos posicionales y de palabra clave solo con respecto a una llamada a una función (ver section 5.3.4 Calls
).
Cuando hablan sobre la definición de una función en section 7.6 Function definitions
, es un término totalmente diferente "valores de parámetros predeterminados".
Sospecho que la gente que pone juntos que por supuesto-ware no eran totalmente familiarizado con Python :-)
A modo de ejemplo, consulte la siguiente definición y pide:
def fn (a, b, c = 1):
return a * b + c
print fn (1, 2) # returns 3, positional and default.
print fn (1, 2, 3) # returns 5, positional.
print fn (c = 5, b = 2, a = 2) # returns 9, named.
print fn (b = 2, a = 2) # returns 5, named and default.
print fn (5, c = 2, b = 1) # returns 7, positional and named.
print fn (8, b = 0) # returns 1, positional, named and default.
El significado de =
cambia, dependiendo de si está en la definición o en la llamada.
En la definición, marca el argumento opcional y establece un valor predeterminado.
En la llamada, simplemente le permite especificar qué argumentos deben ser los valores, en el orden que desee.
"¿por qué también podemos llamarlo con sintaxis de argumento real de palabra clave?" Porque esa es la forma en que funciona el lenguaje. –