"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Quando o Python usa chamada por referência e chamada por referência de objeto?

Quando o Python usa chamada por referência e chamada por referência de objeto?

Publicado em 2024-11-08
Navegar:743

When Does Python Use Call by Reference and Call by Object Reference?

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

  • Passagem por referência: A caixa da variável original é passada para a função chamada, permitindo que quaisquer alterações no conteúdo da variável sejam refletidas na função chamadora.
  • Passagem por referência de objeto: Uma referência à caixa do objeto original é passada para a função chamada. As alterações no objeto são refletidas nas funções de chamada e nas funções chamadas, mas as alterações na própria variável (a caixa) não são.

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.

Declaração de lançamento Este artigo foi reimpresso em: 1729140861 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

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