"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 > Por que a chamada de função não atualiza a variável global?

Por que a chamada de função não atualiza a variável global?

Publicado em 01/11/2024
Navegar:563

Why Does Function Call Not Update Global Variable?

A chamada de função não atualiza a variável global

Esta questão explora um desafio de programação em que uma variável global, inicialmente atribuída como falsa, não é t sendo atualizado quando referenciado em uma função. Apesar da função alterar o valor da variável global, o loop do programa principal continua em execução, levando a um loop infinito. Compreender esse problema requer aprofundar o conceito de namespaces e escopo de variáveis.

Namespace e escopo de variáveis

Na programação, cada função e módulo cria seu próprio namespace. Um namespace é uma coleção de nomes (variáveis, funções, etc.) que são conhecidos e acessíveis dentro desse escopo. Quando um valor é atribuído a uma variável dentro de uma função, uma nova variável é criada no namespace da função, mesmo que exista uma variável global com o mesmo nome.

Usando variáveis ​​globais

Neste caso, quando uma variável global chamada "done" é referenciada dentro da função, uma nova variável local com o mesmo nome é criada no namespace da função. Este “pronto” local é diferente do “pronto” global. Alterar o "concluído" local não tem efeito na variável global.

Solução

Para superar isso, a palavra-chave global deve ser usada para referenciar explicitamente a variável global dentro a função. Ao usar global done, a função diz ao intérprete para acessar a variável global "done" em vez de criar uma nova variável local.

Código Modificado

Para corrigir o problema , a função pode ser modificada da seguinte forma:

def function():
    global done
    for loop:
        code
        if not comply:
            done = True

Explicação

Usar global done estabelece uma conexão entre a variável usada dentro da função e a global. Quando a função modifica o valor de pronto, ela atualiza a mesma variável global que foi referenciada inicialmente. Isso garante que o loop while do programa principal terminará conforme planejado quando a função for definida como True.

Declaração de lançamento Este artigo foi reimpresso em: 1729310358 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