Funções de declaração direta para evitar exceções de 'NameError'
Python requer que as funções sejam definidas antes de serem usadas. Isso pode levar a exceções 'NameError' quando as funções são definidas posteriormente no código, como ao classificar uma lista usando uma função 'cmp' personalizada.
Para evitar esse problema, é possível "declarar adiante "uma função antes de ser definida. Isso envolve agrupar a invocação da função em uma função separada:
def sort_list():
sorted_list = sorted(mylist, cmp=cmp_configs)
print("\n".join([str(bla) for bla in sorted_list]))
def cmp_configs(...) -> int:
...
Ao definir sort_list antes de cmp_configs, Python pode "ver" a declaração de encaminhamento e evitar a exceção 'NameError'.
Funções recursivas e declaração de encaminhamento
No caso de funções recursivas, onde a definição de uma função depende de outra, a declaração direta dentro da mesma função pode ser útil:
def spam():
def eggs():
if end_condition():
return end_result()
else:
return spam()
if end_condition():
return end_result()
else:
return eggs()
spam()
Ao declarar ovos dentro do spam, Python pode reconhecer o nome da função e executar com segurança a chamada recursiva.
Conclusão
Avançar -declarar funções agrupando suas invocações em funções separadas ou usando funções internas dentro de funções recursivas fornece uma solução alternativa para evitar exceções 'NameError' quando as funções são definidas posteriormente no código. No entanto, é importante observar que organizar o código e evitar loops de dependência entre funções é sempre uma boa prática.
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