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'>
Quiz

Faça login para responder este quiz e acompanhar seu progresso de aprendizagem

Em que tipo de dado o *args coleta os argumentos?
A. Uma lista
B. Uma tupla
C. Um dicionário
D. Um conjunto (set)

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'>
Quiz

Faça login para responder este quiz e acompanhar seu progresso de aprendizagem

Em que tipo de dado o **kwargs coleta os argumentos?
A. Uma lista
B. Uma tupla
C. Um dicionário
D. Um conjunto (set)