Argumentos Arbitrários
Já exploramos os argumentos posicionais e opcionais de funções. No entanto, o que fazer quando há muitos argumentos ou quando não se sabe ao certo todos os argumentos que devem ser passados para uma função? Esse problema pode ser resolvido utilizando argumentos arbitrários (argumentos de comprimento variável). Esses argumentos permitem que uma função aceite um número indefinido de argumentos. Isso é especialmente útil ao definir uma função que pode receber uma quantidade variável de valores de entrada sem especificar previamente o número exato de argumentos.
Lembre-se de que cada argumento pode ser uma estrutura de dados, como uma lista ou dicionário. É possível passar uma quantidade arbitrária dessas estruturas utilizando argumentos arbitrários.
Em Python, é possível definir argumentos arbitrários como um único argumento posicional, colocando um asterisco *
antes do nome do argumento. Veja um exemplo:
12345678# 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, utilizamos *
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 diretamente o número de argumentos. Observação: utilizamos este argumento pelo nome, sem o *
, dentro do corpo da função.
Para definir uma tupla de argumentos arbitrários, basta usar *
antes do nome do argumento. No entanto, é recomendado utilizar a construção *args
. Isso melhora a interpretabilidade e a legibilidade do código.
123456789101112131415161718def 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 pode ser observado nos resultados:
- Quando a função é chamada sem argumentos,
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
, é possível trabalhar com os valores da mesma forma que com qualquer outra tupla em Python.
Swipe to start coding
Implemente uma função calculate_total
que calcula o preço total dos itens em um carrinho, aplicando descontos com base no valor total.
- Utilize argumentos arbitrários chamados prices na função
calculate_total
. - Se nenhum argumento for fornecido, retorne
"Your cart is empty."
. - Aplique um desconto de 20% se o total for $200 ou mais.
- Aplique um desconto de 10% se o total for $100 ou mais.
Solução
Obrigado pelo seu feedback!
single
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Can you explain the difference between *args and **kwargs?
How do I use *args with other types of function arguments?
Can you give more examples of when to use *args?
Awesome!
Completion rate improved to 4.35
Argumentos Arbitrários
Deslize para mostrar o menu
Já exploramos os argumentos posicionais e opcionais de funções. No entanto, o que fazer quando há muitos argumentos ou quando não se sabe ao certo todos os argumentos que devem ser passados para uma função? Esse problema pode ser resolvido utilizando argumentos arbitrários (argumentos de comprimento variável). Esses argumentos permitem que uma função aceite um número indefinido de argumentos. Isso é especialmente útil ao definir uma função que pode receber uma quantidade variável de valores de entrada sem especificar previamente o número exato de argumentos.
Lembre-se de que cada argumento pode ser uma estrutura de dados, como uma lista ou dicionário. É possível passar uma quantidade arbitrária dessas estruturas utilizando argumentos arbitrários.
Em Python, é possível definir argumentos arbitrários como um único argumento posicional, colocando um asterisco *
antes do nome do argumento. Veja um exemplo:
12345678# 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, utilizamos *
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 diretamente o número de argumentos. Observação: utilizamos este argumento pelo nome, sem o *
, dentro do corpo da função.
Para definir uma tupla de argumentos arbitrários, basta usar *
antes do nome do argumento. No entanto, é recomendado utilizar a construção *args
. Isso melhora a interpretabilidade e a legibilidade do código.
123456789101112131415161718def 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 pode ser observado nos resultados:
- Quando a função é chamada sem argumentos,
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
, é possível trabalhar com os valores da mesma forma que com qualquer outra tupla em Python.
Swipe to start coding
Implemente uma função calculate_total
que calcula o preço total dos itens em um carrinho, aplicando descontos com base no valor total.
- Utilize argumentos arbitrários chamados prices na função
calculate_total
. - Se nenhum argumento for fornecido, retorne
"Your cart is empty."
. - Aplique um desconto de 20% se o total for $200 ou mais.
- Aplique um desconto de 10% se o total for $100 ou mais.
Solução
Obrigado pelo seu feedback!
single