Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

191
Vistas
¿Qué hace ** (doble estrella/asterisco) y * (estrella/asterisco) para los parámetros?

En las siguientes definiciones de métodos, ¿qué hace el *y **para param2?

def foo(param1, *param2):
def bar(param1, **param2):
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

El *argsand **kwargses un modismo común para permitir un número arbitrario de argumentos a las funciones como se describe en la sección más detallada sobre la definición de funciones en la documentación de Python.

Le *argsdará todos los parámetros de la función como una tupla :

def foo(*args):
    for a in args:
        print(a)        

foo(1)
# 1

foo(1,2,3)
# 1
# 2
# 3

El **kwargsle dará todos los argumentos de palabras clave excepto los correspondientes a un parámetro formal como un diccionario.

def bar(**kwargs):
    for a in kwargs:
        print(a, kwargs[a])  

bar(name='one', age=27)
# name one
# age 27

Ambos modismos se pueden mezclar con argumentos normales para permitir un conjunto de argumentos fijos y algunos variables:

def foo(kind, *args, **kwargs):
   pass

También es posible usar esto al revés:

def foo(a, b, c):
    print(a, b, c)

obj = {'b':10, 'c':'lee'}

foo(100,**obj)
# 100 10 lee

Otro uso del *lmodismo es desempaquetar listas de argumentos al llamar a una función.

def foo(bar, lee):
    print(bar, lee)

l = [1,2]

foo(*l)
# 1 2

En Python 3, es posible usar *len el lado izquierdo de una tarea ( Extended Iterable Unpacking ), aunque da una lista en lugar de una tupla en este contexto:

first, *rest = [1,2,3,4]
first, *l, last = [1,2,3,4]

También Python 3 agrega una nueva semántica (consulte PEP 3102 ):

def func(arg1, arg2, arg3, *, kwarg1, kwarg2):
    pass

Dicha función acepta solo 3 argumentos posicionales, y todo lo que *sigue solo se puede pasar como argumentos de palabras clave.

Nota:

  • Un Python dict, utilizado semánticamente para pasar argumentos de palabras clave, se ordena arbitrariamente. Sin embargo, en Python 3.6, se garantiza que los argumentos de palabras clave recuerdan el orden de inserción.

  • "El orden de los elementos en **kwargsnow corresponde al orden en que se pasaron los argumentos de palabras clave a la función". - Novedades en Python 3.6

  • De hecho, todos los dictados en CPython 3.6 recordarán el orden de inserción como un detalle de implementación, esto se vuelve estándar en Python 3.7.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda