Melhor resposta
Veja este código.
- counter = 0
- def increment ():
- contador + = 1
- incremento ()
Python não tem declarações de variáveis, então ele tem que descobrir o escopo das próprias variáveis. Ele faz isso por uma regra simples: Se houver uma atribuição para uma variável dentro de uma função, essa variável é considerada local. Assim, a linha
contador + = 1
implicitamente torna o contador local para increment (). A tentativa de executar esta linha, entretanto, tentará ler o valor do contador da variável local antes de ser atribuído, resultando em um UnboundLocalError.
Para resolver esse tipo de erro, faça as seguintes alterações.
- counter = 0
- def increment ():
- contador global
- contador + = 1
- incremento ()
Tudo de bom …!
Resposta
UnboundLocalError é gerado quando uma variável local é referenciada antes de ser atribuído.
É uma subclasse de NameError
Significa que você tem um identificador que tentou acessar antes de ser atribuído ou talvez declarado.
Um dos os muitos problemas de idiomas sem semântica de digitação fraca, herança múltipla e nenhuma classe ou protocolo base comum.
Aí está eu É muita dependência de Exceções em que a introspecção e a inferência do compilador poderiam ser mais informativas antes que o código pudesse ser executado.
O que você acha que está economizando ao digitar caracteres para ter validação em seu código, você paga com rastreamentos de pilha .