Lista de parámetros de longitud variable en Python

Los parámetros de longitud variable se pueden implementar en Python a través de parámetros de palabras clave y parámetros que no son palabras clave. Use ** para especificar el diccionario como parámetros de palabras clave y * para especificar tuplas como parámetros que no son palabras clave.

1. Parámetros de palabras clave:

Defina una función con parámetros que no sean palabras clave:def func_name([位置参数或默认参数,] *non_keyword_args)

>>> def func1(arg1,arg2,*arg3):
		print('arg1:',arg1)
		print('aeg2:',arg2)
		for arg in arg3:
			print('非关键字参数:',arg)
>>> func1(1,2,3,'a',1,'b')
arg1: 1
aeg2: 2
非关键字参数: 3
非关键字参数: a
非关键字参数: 1
非关键字参数: b

Los parámetros posicionales (y los parámetros predeterminados) se emparejarán uno por uno en el orden o los valores de los parámetros se darán de acuerdo con el nombre del parámetro. Después de hacer coincidir los parámetros posicionales y los parámetros predeterminados, si hay parámetros adicionales y la función declara parámetros que no son palabras clave, estos parámetros se empaquetan en tuplas como parámetros que no son palabras clave.
En la figura anterior, arg1 coincide con 1, arg2 coincide con 2 y los parámetros restantes se empaquetan en tuplas y se pasan a arg3.

2. Parámetros de palabras clave

Defina una función con parámetros que no sean palabras clave:def func_name([位置参数或默认参数,] **keyword_args)

>>> def func2(arg1,arg2,**arg3):
		print('arg1:',arg1)
		print('arg2:',arg2)
		for k in arg3.keys():
			print('关键字参数 [',k,' : ',arg3[k],']')
>>> func2(1,2,k1='v1',k2='v2',k3='v3')
arg1: 1
arg2: 2
关键字参数 [ k1  :  v1 ]
关键字参数 [ k2  :  v2 ]
关键字参数 [ k3  :  v3 ]

Cuando los parámetros de palabras clave se definen en la función, después de que los parámetros posicionales y los parámetros predeterminados coincidan, los parámetros de palabras clave restantes se empaquetarán en un diccionario y se pasarán a los parámetros de palabras clave. arg11 coincide con 1, arg2 coincide con 2 y los parámetros restantes se empaquetan en un diccionario y se pasan a arg3.

En el caso anterior, si los parámetros entrantes coinciden con los parámetros posicionales y los parámetros predeterminados, habrá un error si hay parámetros que no pueden coincidir con la función, como por ejemplo:

>>> f1(1,2,3,'a'=1)
SyntaxError: keyword can't be an expression

>>> func2(1,2,3,k1='v1',k2='v2',k3='v3')
Traceback (most recent call last):
  File "<pyshell#32>", line 1, in <module>
    func2(1,2,3,k1='v1',k2='v2',k3='v3')
TypeError: func2() takes 2 positional arguments but 3 were given

3. Parámetros de palabras clave y parámetros que no son palabras clave

En el proceso de declarar la lista de parámetros de una función, el orden de varias declaraciones de parámetros:

def func_name(位置参数, 默认参数, 非关键字参数, 关键字参数)

Nota: ¡El orden no se puede cambiar!
Defina la función func:

>>> def func(arg1, arg2, arg3='default', *arg4, **arg5):
	print('arg1:',arg1)
	print('arg2:',arg2)
	print('aeg3:',arg3)
	for arg in arg4:
		print('non-keyword arg:',arg)
	for k in arg5.keys():
		print('keyword arg [',k,':',arg5[k],']')

Al pasar parámetros a la función, puede empaquetar parámetros que no sean palabras clave y parámetros de palabras clave por adelantado, por ejemplo:

>>> non_keyword_args = (1,2,3,4)
>>> keyword_args = {'k1':'v1','k2':'v2'}
>>> func(1,2,3,*non_keyword_args,**keyword_args)
arg1: 1
arg2: 2
aeg3: 3
non-keyword arg: 1
non-keyword arg: 2
non-keyword arg: 3
non-keyword arg: 4
keyword arg [ k1 : v1 ]
keyword arg [ k2 : v2 ]

Sin embargo, ¿qué pasa si esto sucede? func(1,2,3,4,5,k3='v3',*non_keyword_args,**keyword_args)
Ejecútelo y pruébelo:

>>> func(1,2,3,4,5,k3='v3',*non_keyword_args,**keyword_args)
arg1: 1
arg2: 2
aeg3: 3
non-keyword arg: 4
non-keyword arg: 5
non-keyword arg: 1
non-keyword arg: 2
non-keyword arg: 3
non-keyword arg: 4
keyword arg [ k1 : v1 ]
keyword arg [ k2 : v2 ]
keyword arg [ k3 : v3 ]

Nota: Los parámetros de palabras clave y no palabras clave que se pasan realmente a la función se basan en los parámetros que realmente pasamos. Esos otros parámetros que no son palabras clave y palabras clave que se pasan se empaquetarán con el diccionario y las tuplas que pasamos. Como último parámetro pasó.

Supongo que te gusta

Origin blog.csdn.net/Miha_Singh/article/details/85009153
Recomendado
Clasificación