Conteúdo do Curso
Tutorial de Funções em Python
Tutorial de Funções em Python
Argumentos Arbitrários
Já exploramos os argumentos posicionais e opcionais da função. No entanto, o que devemos fazer quando há inúmeros argumentos ou quando não temos certeza sobre todos os argumentos que devem ser passados para uma função? Este problema pode ser resolvido usando argumentos arbitrários (argumentos de comprimento variável). Esses argumentos permitem que uma função aceite um número indefinido de argumentos. Isso é particularmente útil quando você deseja definir uma função que pode receber um número variável de valores de entrada sem especificar o número exato de argumentos com antecedência.
Nota
Lembre-se de que cada argumento pode ser uma estrutura de dados, como uma lista ou dicionário. Você pode passar um número arbitrário de tais estruturas usando argumentos arbitrários.
Em Python, você pode definir argumentos arbitrários como um único argumento posicional colocando um asterisco *
antes do nome do argumento. Aqui está um exemplo:
# Define function with arbitrary arguments named values def calculate_sum(*values): return sum(values) # Test the function using different number of arguments print(calculate_sum(1, 2, 3)) print(calculate_sum(1, 2, 3, 4)) print(calculate_sum(1, 2, 3, 4, 5))
No código acima, usamos *
para declarar que a variável values
contém vários argumentos arbitrários e é interpretada como uma tupla. Em seguida, usamos a função embutida sum
para calcular a soma. Podemos ver que o resultado está correto para todos os exemplos, e não precisamos especificar o número de argumentos diretamente. Nota que usamos este argumento pelo nome sem *
no corpo da função.
Nota
Para definir uma tupla de argumentos arbitrários, basta usar
*
antes do nome do argumento. No entanto, é recomendado usar a construção*args
. Isso melhora a interpretabilidade e a legibilidade do código.
def example_function(*args): # Print the type of args print(f'Type of args: {type(args)}') # Print the whole tuple print(f'Args tuple: {args}') # Iterate over the tuple for arg in args: print(arg) # Call the function without any arguments print("Call without arguments:") example_function() # Call the function with one argument print("\nCall with one argument:") example_function(1) # Call the function with multiple arguments print("\nCall with multiple arguments:") example_function(1, 2, 3, 'hello', [4, 5, 6])
Como você pode ver nos resultados:
- Quando a função é chamada sem nenhum argumento,
args
será uma tupla vazia()
. - Quando a função é chamada com um argumento,
args
será uma tupla com um elemento(1,)
. - Quando a função é chamada com múltiplos argumentos, todos eles são armazenados na tupla, por exemplo
(1, 2, 3, 'hello', [4, 5, 6])
.
Com *args
, você pode trabalhar com os valores da mesma forma que faria com qualquer outra tupla em Python.
Swipe to show code editor
Escreva uma função que calcule o valor médio de um número arbitrário de argumentos. Use args
como o nome de um argumento arbitrário.
Solução
Obrigado pelo seu feedback!
Argumentos Arbitrários
Já exploramos os argumentos posicionais e opcionais da função. No entanto, o que devemos fazer quando há inúmeros argumentos ou quando não temos certeza sobre todos os argumentos que devem ser passados para uma função? Este problema pode ser resolvido usando argumentos arbitrários (argumentos de comprimento variável). Esses argumentos permitem que uma função aceite um número indefinido de argumentos. Isso é particularmente útil quando você deseja definir uma função que pode receber um número variável de valores de entrada sem especificar o número exato de argumentos com antecedência.
Nota
Lembre-se de que cada argumento pode ser uma estrutura de dados, como uma lista ou dicionário. Você pode passar um número arbitrário de tais estruturas usando argumentos arbitrários.
Em Python, você pode definir argumentos arbitrários como um único argumento posicional colocando um asterisco *
antes do nome do argumento. Aqui está um exemplo:
# Define function with arbitrary arguments named values def calculate_sum(*values): return sum(values) # Test the function using different number of arguments print(calculate_sum(1, 2, 3)) print(calculate_sum(1, 2, 3, 4)) print(calculate_sum(1, 2, 3, 4, 5))
No código acima, usamos *
para declarar que a variável values
contém vários argumentos arbitrários e é interpretada como uma tupla. Em seguida, usamos a função embutida sum
para calcular a soma. Podemos ver que o resultado está correto para todos os exemplos, e não precisamos especificar o número de argumentos diretamente. Nota que usamos este argumento pelo nome sem *
no corpo da função.
Nota
Para definir uma tupla de argumentos arbitrários, basta usar
*
antes do nome do argumento. No entanto, é recomendado usar a construção*args
. Isso melhora a interpretabilidade e a legibilidade do código.
def example_function(*args): # Print the type of args print(f'Type of args: {type(args)}') # Print the whole tuple print(f'Args tuple: {args}') # Iterate over the tuple for arg in args: print(arg) # Call the function without any arguments print("Call without arguments:") example_function() # Call the function with one argument print("\nCall with one argument:") example_function(1) # Call the function with multiple arguments print("\nCall with multiple arguments:") example_function(1, 2, 3, 'hello', [4, 5, 6])
Como você pode ver nos resultados:
- Quando a função é chamada sem nenhum argumento,
args
será uma tupla vazia()
. - Quando a função é chamada com um argumento,
args
será uma tupla com um elemento(1,)
. - Quando a função é chamada com múltiplos argumentos, todos eles são armazenados na tupla, por exemplo
(1, 2, 3, 'hello', [4, 5, 6])
.
Com *args
, você pode trabalhar com os valores da mesma forma que faria com qualquer outra tupla em Python.
Swipe to show code editor
Escreva uma função que calcule o valor médio de um número arbitrário de argumentos. Use args
como o nome de um argumento arbitrário.
Solução
Obrigado pelo seu feedback!