Varias formas de escribir parámetros de funciones.
- Parámetros posicionales
- Parámetros predeterminados
- parámetro variable
- argumentos de palabras clave
- parámetros de palabras clave con nombre
Los cinco parámetros anteriores se pueden combinar y utilizar según la situación y las necesidades reales.
El orden de las definiciones numéricas debe ser: parámetros obligatorios, parámetros predeterminados, parámetros variables, parámetros de palabras clave con nombre y parámetros de palabras clave.
Clasificación de parámetros
- Parámetros requeridos
- Parámetros opcionales
parámetro variable
def calc(*numbers):
sum = 0
for n in numbers:
sum = sum + n * n
return sum
Los números son parámetros variables, se pueden pasar listas y tuplas.
argumentos de palabras clave
El contenido recibido es un diccionario
def persona(nombre, edad, **kw):
print('nombre:', nombre, 'edad:', edad, 'otro:', kw)
¿Cuál es el uso de los parámetros de palabras clave? Puede ampliar la funcionalidad de la función. Por ejemplo, en la función persona, tenemos la garantía de recibir los dos parámetros nombre y edad, pero si la persona que llama está dispuesta a proporcionar más parámetros, también podemos recibir
parámetros de palabras clave con nombre
A diferencia de los parámetros de palabras clave **kw, los parámetros de palabras clave con nombre requieren un delimitador especial ==*==, y los parámetros que siguen a * se consideran parámetros de palabras clave con nombre.
A través de una tupla y un dict, se puede llamar a la función anterior
def f1(a, b, c=0, *args, **kw):
print('a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw)
def f2(a, b, c=0, *, d, **kw):
print('a =', a, 'b =', b, 'c =', c, 'd =', d, 'kw =', kw)
>>> f1(1, 2)
a = 1 b = 2 c = 0 args = () kw = {
}
>>> f1(1, 2, c=3)
a = 1 b = 2 c = 3 args = () kw = {
}
>>> f1(1, 2, 3, 'a', 'b')
a = 1 b = 2 c = 3 args = ('a', 'b') kw = {
}
>>> f1(1, 2, 3, 'a', 'b', x=99)
a = 1 b = 2 c = 3 args = ('a', 'b') kw = {
'x': 99}
>>> f2(1, 2, d=99, ext=None)
a = 1 b = 2 c = 0 d = 99 kw = {
'ext': None}
>>> args = (1, 2, 3, 4)
>>> kw = {
'd': 99, 'x': '#'}
>>> f1(*args, **kw)
a = 1 b = 2 c = 3 args = (4,) kw = {
'd': 99, 'x': '#'}
>>> args = (1, 2, 3)
>>> kw = {
'd': 88, 'x': '#'}
>>> f2(*args, **kw)
a = 1 b = 2 c = 3 d = 88 kw = {
'x': '#'}