A passagem de argumento por referencia e valor já foi visto em
Portugol: Passagem de Argumento
e em Tutorial C: Funções/Passagem de Argumento.
Quando passamos um valor ou variável como argumento para uma função, estamos passando
apenas seu valor por padrão. Depois de usado internamente na função, esse valor será descartado.
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 utilizados.
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