A passagem de argumento por referencia e valor já foram visto em
Portugol: Passagem de Argumento
e em Tutorial C: Funções/Passagem de Argumento.
Quando simplesmente passamos um valor ou variável como argumento para uma função, estamos passando
apenas seu valor.
Depois de usado internamente na função, esse valor será destruído.
Exemplo 6
param1 = 10
def nome_funcao(param1):
param1 = 100;
print("antes:",param1)
nome_funcao(param1)
print("depois",param1)
Saída
antes: 10
depois 10
Para passarmos um valor por referência, precisamos utilizar algum objeto no qual desejamos modificador seu conteúdo.
Objetos e estruturas de dados dinâmicas como Tuple, Set e Dictonary podem ser utiilizados.
Exemplo 6.1
lista = [1,2]
def nome_funcao(param1):
param1.append(4) # adição de novo elemento
print("antes:",lista)
nome_funcao(lista)
print("depois",lista)
Saída
antes: [1, 2]
depois [1, 2, 4]
Exemplo 6.2
def nome_funcao(param):
param.atributo = 10
class classe:
atributo = 0
#objeto
obj = classe()
obj.atributo = 1
print("antes:",obj.atributo)
nome_funcao(obj)
print("depois",obj.atributo)
Saída
antes: 1
depois 10