Acessando variáveis não locais em escopos de funções aninhadas
Em Python, escopos de funções aninhadas fornecem acesso a escopos delimitadores. No entanto, tentar modificar uma variável em um escopo delimitador dentro de uma função aninhada pode resultar em um UnboundLocalError.
Para resolver esse problema, você tem várias opções:
1. Usando a palavra-chave 'nonlocal' (Python 3):
Para Python 3 e posteriores, a palavra-chave nonlocal permite religar variáveis não locais dentro de funções aninhadas.
def outer():
ctr = 0
def inner():
nonlocal ctr
ctr = 1
inner()
2. Acesso indireto via listas (Python 2 e 3):
No Python 2 e 3, você pode usar uma lista para armazenar a variável e incrementá-la indiretamente dentro da função aninhada.
ctr = [0]
def inner():
ctr[0] = 1
3. Uso de variáveis globais (não recomendado):
Embora o uso global possa permitir o acesso a variáveis de escopos delimitadores, geralmente é desencorajado devido a possíveis conflitos e problemas de legibilidade do código.
def outer():
global ctr
ctr = 0
def inner():
ctr = 1
A escolha da solução apropriada depende da sua versão específica do Python e das considerações de design do seu código.
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