Escreva algumas linhas de código Python,, Xque não fazem referência a nenhuma variável global, como
def method():
X
print(a)
method()
imprime 1mas
def method():
X
X
print(a)
method()
impressões 2.
Então, eu odeio ser um defensor, mas parece varse localssão realmente variáveis globais em Python:
def test_global_1():
global vars, locals
vars = lambda: 2
locals = lambda: 3
def test_global_2():
print(vars())
print(locals())
test_global_1()
test_global_2()
Além disso, parece que as pessoas gostariam de ver critérios objetivos de vitória para quebra-cabeças como esse. O tamanho do código não parece muito bom aqui, então talvez possamos criar um sistema de pontos brownie para vários recursos novos do código? Não sei exatamente o que poderia ser, mas aqui está um começo:
- +1 para realmente não globais (nenhum
varsoulocals) - +1 por ser o primeiro a publicar uma técnica específica
- +1 para a solução mais curta publicada
- +1 para uma solução que envolve apenas uma única instrução Python
- +1 para "hacks" interessantes, como ingressar em limites lexicais
- +1 por não usar exceções
E se você puder pensar em mais, poderá editar esta pergunta para adicionar à lista.
Esse problema pode ser resolvido sem o uso de exceções e sem o uso de globais como varse locals? Suspeito que sim, embora ainda não tenha descoberto exatamente até agora ...
X, mas existem outras opções.