Args e Kwargs do Python
Python args and kwargs Made Easy
*args e **kwargs podem parecer assustadores, mas a verdade é que não são tão difíceis de entender e têm o poder de conceder muita flexibilidade às suas funções.
Leia o artigo Python *args and **kwargs Made Easy para uma introdução mais aprofundada.
Args e Kwargs
*args e **kwargs permitem que você passe um número indefinido de argumentos e palavras-chave ao chamar uma função.
# Define uma função que aceita qualquer número de argumentos posicionais e de palavra-chave
def some_function(*args, **kwargs):
pass
# Chama com qualquer número de argumentos posicionais
some_function(arg1, arg2, arg3)
# Chama com qualquer número de argumentos de palavra-chave
some_function(key1=arg1, key2=arg2, key3=arg3)
# Chama com argumentos posicionais e de palavra-chave
some_function(arg, key1=arg1)
# Ou chama sem argumentos
some_function()
Convenções do Python
As palavras *args e **kwargs são convenções. Elas não são impostas pelo interpretador, mas são consideradas boas práticas pela comunidade Python.
Args
Você pode acessar os argumentos através da variável args:
# *args coleta argumentos posicionais em uma tupla
def some_function(*args):
print(f'Argumentos passados: {args} como {type(args)}')
# Passa múltiplos argumentos - eles serão coletados na tupla args
some_function('arg1', 'arg2', 'arg3')
Arguments passed: ('arg1', 'arg2', 'arg3') as <class 'tuple'>
Faça login para responder este quiz e acompanhar seu progresso de aprendizagem
*args coleta os argumentos?Kwargs
Palavras-chave são acessadas através da variável kwargs:
# **kwargs coleta argumentos de palavra-chave em um dicionário
def some_function(**kwargs):
print(f'Palavras-chave: {kwargs} como {type(kwargs)}')
# Passa argumentos de palavra-chave - eles serão coletados no dicionário kwargs
some_function(key1='arg1', key2='arg2')
keywords: {'key1': 'arg1', 'key2': 'arg2'} as <class 'dict'>
Faça login para responder este quiz e acompanhar seu progresso de aprendizagem
**kwargs coleta os argumentos?