Escreva algumas linhas de código Python,, X
que não fazem referência a nenhuma variável global, como
def method():
X
print(a)
method()
imprime 1
mas
def method():
X
X
print(a)
method()
impressões 2
.
Então, eu odeio ser um defensor, mas parece vars
e locals
sã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
vars
oulocals
) - +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 vars
e locals
? Suspeito que sim, embora ainda não tenha descoberto exatamente até agora ...
X
, mas existem outras opções.