Python Tutorials

Dominando Argumentos de Funções em Python

Spread the love

Funções são a pedra angular de código Python modular e reutilizável. Este tutorial mergulha nas intrincadas particularidades dos argumentos de função, equipando você com o conhecimento para escrever programas mais limpos, eficientes e menos propensos a erros.

Sumário

Argumentos Posicionais

Argumentos posicionais são a forma mais simples. Eles são passados para uma função na ordem em que são definidos. A ordem é estritamente aplicada; a incompatibilidade da ordem dos argumentos durante a chamada da função levará a resultados incorretos ou erros.


def greet(name, greeting):
  print(f"{greeting}, {name}!")

greet("Alice", "Hello")  # Ordem correta
greet("Hello", "Alice")  # Ordem incorreta - imprimirá "Alice, Hello!"

Argumentos Nomeados

Argumentos nomeados permitem que você especifique o nome do argumento ao chamar uma função. Isso torna seu código mais legível e menos propenso a erros, especialmente ao lidar com funções que possuem muitos parâmetros. A ordem dos argumentos nomeados não importa.


def describe_pet(animal_type, pet_name, age=None):
  print(f"nEu tenho um {animal_type}.")
  print(f"O nome do meu {animal_type} é {pet_name.title()}.")
  if age:
    print(f"Meu {animal_type} tem {age} anos.")

describe_pet(animal_type='hamster', pet_name='harry')
describe_pet(pet_name='willie', animal_type='dog', age=5)

Argumentos com Valor Padrão

Argumentos com valor padrão fornecem um valor de retorno para parâmetros de função. Se um valor não for fornecido quando a função é chamada, o valor padrão é usado. Argumentos com valor padrão devem sempre ser colocados após argumentos não-padrão na definição da função.


def power(base, exponent=2):
  return base ** exponent

print(power(3))      # Saída: 9 (expoente padrão é 2)
print(power(3, 3))  # Saída: 27

Número Variável de Argumentos (*args e **kwargs)

A sintaxe `*args` e `**kwargs` permite que você manipule um número variável de argumentos posicionais e nomeados, respectivamente. `*args` coleta argumentos posicionais em uma tupla, enquanto `**kwargs` coleta argumentos nomeados em um dicionário.


def my_function(*args, **kwargs):
    print("Argumentos posicionais:", args)
    print("Argumentos nomeados:", kwargs)

my_function(1, 2, 3, name="Alice", age=30)

Argumentos Mutáveis vs. Imutáveis

Entender a mutabilidade é crucial ao trabalhar com argumentos de função. Objetos imutáveis (como números, strings, tuplas) não podem ser alterados dentro de uma função; quaisquer alterações criam um novo objeto. Objetos mutáveis (como listas, dicionários) podem ser modificados no local, afetando o objeto original fora da função. Isso pode levar a efeitos colaterais inesperados se não for tratado com cuidado.


def modify_list(my_list):
  my_list.append(4)  # Modifica a lista original

my_list = [1, 2, 3]
modify_list(my_list)
print(my_list)  # Saída: [1, 2, 3, 4] (lista original modificada)


def modify_string(my_string):
    my_string += "!!!"  # Cria uma nova string

my_string = "Hello"
modify_string(my_string)
print(my_string)  # Saída: Hello (string original inalterada)

Este guia abrangente fornece uma base sólida para trabalhar com argumentos de função em Python. Dominar esses conceitos melhorará significativamente a qualidade e a manutenibilidade do seu código.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *