Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

444
Visualizações
¿Por qué usar ** kwargs en python? ¿Cuáles son algunas de las ventajas del mundo real sobre el uso de argumentos con nombre?

Vengo de una formación en lenguajes estáticos. ¿Alguien puede explicar (idealmente a través de un ejemplo) las ventajas del mundo real de usar **kwargs sobre argumentos con nombre ?

Para mí, solo parece hacer que la llamada a la función sea más ambigua. Gracias.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Es posible que desee aceptar argumentos con nombres casi arbitrarios por una serie de razones, y eso es lo que **kwle permite hacer el formulario.

La razón más común es pasar los argumentos directamente a alguna otra función que esté envolviendo (los decoradores son un caso de esto, ¡pero LEJOS de ser el único!) -- en este caso, **kwafloja el acoplamiento entre envoltorio y envoltorio, como el envoltorio no tiene que saber o preocuparse por todos los argumentos del envoltorio. Aquí hay otra razón completamente diferente:

d = dict(a=1, b=2, c=3, d=4)

si todos los nombres tuvieran que ser conocidos de antemano, entonces obviamente este enfoque simplemente no podría existir, ¿verdad? Y, por cierto, cuando corresponda, prefiero esta forma de hacer un dict cuyas claves son cadenas literales para:

d = {'a': 1, 'b': 2, 'c': 3, 'd': 4}

simplemente porque este último tiene bastante puntuación y, por lo tanto, es menos legible.

Cuando ninguna de las excelentes razones para aceptar **kwargsse aplica, entonces no lo aceptes: es así de simple. IOW, si no hay una buena razón para permitir que la persona que llama pase argumentos adicionales con nombres arbitrarios, no permita que eso suceda, simplemente evite poner un **kwformulario al final de la firma de la función en la defdeclaración.

En cuanto al uso **kw en una llamada, eso le permite reunir el conjunto exacto de argumentos con nombre que debe pasar, cada uno con los valores correspondientes, en un dict, independientemente de un único punto de llamada, luego use ese dict en el único punto de llamada. Comparar:

if x: kw['x'] = x
if y: kw['y'] = y
f(**kw)

a:

if x:
  if y:
    f(x=x, y=y)
  else:
    f(x=x)
else:
  if y:
    f(y=y)
  else:
    f()

Incluso con solo dos posibilidades (¡y del tipo más simple!), la falta de **kwya hace que la segunda opción sea absolutamente insostenible e intolerable; imagínense cómo se desarrolla cuando hay media docena de posibilidades, posiblemente en una interacción ligeramente más rica. ¡ sin **kw, la vida sería un infierno absoluto bajo tales circunstancias!

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda