Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

183
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!