O não -controlado do Python parece muito confuso quando os recém -chegados ao Python experimentam pela primeira vez. No entanto, é muito fácil. Um terror não atribuído pode ocorrer devido a duas razões no Python, uma é quando você está tentando acessar o valor de uma variável antes de ser atribuída, e a segunda é quando o Python falha em diferenciar entre variáveis globais e locais.
Esta posta.
Razão 1: Acessando a variável local antes de atribuir valor
Normalmente, quando o programador não está funcionando dentro de nenhuma função ou variáveis de escopo local, tentando acessar uma variável antes de inicializá -la com um valor retorna o seguinte erro:
No entanto, quando o mesmo erro é executado com variáveis locais, digamos dentro de uma função, o programa retorna o não -contrato, o que significa que não conseguiu encontrar a variável local enquanto o acessava. Para demonstrar isso, o seguinte código:
def func ():
impressão (x)
x = 420
func ()
Executado, produzirá o seguinte resultado:
Solução: Corrigindo a ordem de acesso da variável local
Para evitar encontrar esse erro, basta ver que você está inicializando a variável local com algum valor antes de tentar acessá -lo. O código correto para o exemplo acima é o seguinte:
def func ():
x = 420
impressão (x)
func ()
A variável “x”É atribuído um valor antes de ser acessado e agora, quando este programa é executado, produz o seguinte resultado no terminal:
A saída verifica que você corrigiu com sucesso o não -atendimento não atendido causado pela ordem errada de acessar a variável local.
Razão 2: Python não pode diferenciar entre variáveis locais e globais
Esse motivo é um pouco confuso para a maioria dos novos entusiastas do Python e nada está logicamente errado no programa. Para demonstrar esse erro de uma maneira não confusa, vamos pegar o código a seguir para acessar uma variável global dentro de uma função:
x = 420
def func ():
impressão (x)
func ()
Este código produz a saída sem erros, que é a seguinte:
Mas quando alguma tarefa é feita para a variável global dentro da função, como:
x = 420
def func ():
impressão (x)
x = 33
func ()
Começa a produzir o não -atendido, como mostrado abaixo:
A razão para isso é que, assim que uma mudança na variável global é feita, o programa acha que o usuário deseja acessar e alterar uma variável local, devido à qual não descobre que a variável local e retorna o não -contrato.
Solução: Use a palavra -chave global para resolver confusão
A melhor maneira de resolver esse problema é simplesmente usar a palavra -chave "global" no início da função para dizer ao programa que essa variável local está vinculada à variável global. Para demonstrar esta solução, pegue o seguinte código:
x = 420
def func ():
global x
impressão (x)
x = 30
func ()
Isso produzirá a seguinte saída no terminal quando executada:
Você aprendeu com sucesso as razões para o não -contratanterror junto com sua solução.
Conclusão
O não -atendido não pode ser causado pela tentativa de acessar uma variável local antes de atribuir algum valor a ele, ou de outra forma, pode ser causado quando o programa não pode diferenciar se o usuário deseja acessar a variável local ou a variável global. Ambas as razões foram explicadas junto com sua demonstração e solução completamente neste post.