Schreiben Sie ein paar Zeilen Python-Code, der X
keine globalen Variablen referenziert, so dass
def method():
X
print(a)
method()
druckt 1
aber
def method():
X
X
print(a)
method()
druckt 2
.
Ich hasse es, ein Stickler zu sein, aber es scheint vars
und locals
sind tatsächlich globale Variablen in 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()
Es sieht auch so aus, als würden die Leute gerne objektive Gewinnkriterien für solche Rätsel sehen. Die Codelänge fühlt sich hier nicht wirklich richtig an, also könnten wir vielleicht ein System von Brownie-Punkten für verschiedene neuartige Funktionen des Codes erstellen? Ich bin mir nicht sicher, was genau das sein könnte, aber hier ist ein Anfang:
- +1 für wirklich wirklich keine Globalen (nein
vars
oderlocals
) - +1 für den ersten Beitrag zu einer bestimmten Technik
- +1 für die kürzeste veröffentlichte Lösung
- +1 für eine Lösung mit nur einer Python-Anweisung
- +1 für interessante "Hacks" wie das Beitreten an lexikalischen Grenzen
- +1 für die Nichtverwendung von Ausnahmen
Und wenn Ihnen mehr einfällt, können Sie diese Frage bearbeiten, um sie der Liste hinzuzufügen.
Kann dieses Problem ohne Verwendung von Ausnahmen und ohne Verwendung von Globals wie vars
und gelöst werden locals
? Ich vermute, es kann, obwohl ich noch nicht genau herausgefunden habe, wie ...
X
, aber es gibt andere Möglichkeiten.