Chamada de funções Python por referência (duplicada)
Em muitas linguagens de programação, os parâmetros podem ser passados por valor ou por referência usando palavras reservadas específicas . No entanto, em Python, quando um parâmetro é passado para uma função, ele nunca modifica o valor da variável original na função de chamada.
Exemplo 1: Chamada por valor
k = 2
def foo(n):
n *= n
return n
j = foo(k)
print(j) # 4
print(k) # 2
Aqui, o valor de k permanece inalterado após chamar a função foo porque Python passa argumentos por valor.
Exemplo 2: Chamada por Global
Para modificar a variável na função de chamada, a palavra-chave global pode ser usada.
n = 0
def foo():
global n
n *= n
return n
Neste caso, a palavra-chave global permite que n seja modificado dentro da função foo, e seu valor será atualizado na função de chamada.
Passe pela referência do objeto em Python
Python, no entanto, não segue estritamente chamada por valor ou chamada por referência. Em vez disso, ele emprega um conceito chamado passagem por referência de objeto.
Em Python, variáveis referem-se a objetos, não aos próprios objetos. Assim, quando uma variável é passada para uma função, ela passa uma referência ao objeto, não ao objeto em si.
Por exemplo:
def append_one(li):
li.append(1)
x = [0]
append_one(x)
print(x) # [0, 1]
Neste código, a função append_one anexa 1 à lista x. Como a lista é passada por referência de objeto, quaisquer alterações feitas na lista dentro da função serão refletidas na função de chamada.
Passagem por referência vs Passagem por referência de objeto
Em conclusão, Python segue a passagem por referência de objeto, onde as variáveis se referem a objetos e não os próprios objetos. Isso permite que as funções modifiquem os objetos passados a elas, mas as alterações nas próprias referências de variáveis não são propagadas de volta para a função de chamada.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3