Junior
Como são passados os argumentos para uma função: por referência ou por valor?
sobes.tech IA
Resposta da IA
Em Python, os argumentos não são passados exatamente por referência nem exatamente por valor, mas por um mecanismo que muitas vezes é chamado de "passagem por referência de objeto" ou "passagem por partilha".
Isto significa o seguinte:
- Ao passar um argumento para uma função, é passada uma referência ao objeto.
- Se o objeto for mutável (por exemplo, uma lista, um dicionário), as alterações dentro da função serão visíveis fora dela.
- Se o objeto for imutável (por exemplo, um número, uma string, uma tupla), ao tentar modificá-lo dentro da função será criado um novo objeto, e o objeto original fora da função permanecerá sem alterações.
Objetos mutáveis:
# Objeto mutável (lista)
def modify_list(items):
items.append(4)
my_list = [1, 2, 3]
modify_list(my_list)
# my_list agora é [1, 2, 3, 4]
Objetos imutáveis:
# Objeto imutável (número)
def modify_number(num):
num = num + 1
my_number = 5
modify_number(my_number)
# my_number continua a ser 5