Напишіть кілька рядків коду Python X
, який не посилається на будь-які глобальні змінні, такі як
def method():
X
print(a)
method()
відбитки, 1
але
def method():
X
X
print(a)
method()
відбитки 2
.
Отже, я ненавиджу бути стикером, але, схоже, vars
і locals
насправді є глобальними змінними в 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()
Крім того, схоже, що люди хотіли б бачити об'єктивні критерії виграшу таких загадок. Довжина коду тут насправді не відчувається, тому, можливо, ми могли б скласти систему очок брауні для різних нових функцій коду? Я не впевнений, що це може бути, але ось початок:
- +1 для справді відсутніх глобалів (немає
vars
чиlocals
) - +1 за те, що був першим, хто опублікував певну техніку
- +1 для найкоротшого розміщеного рішення
- +1 для рішення, що включає лише одну заяву Python
- +1 за такі цікаві "хаки", як приєднання за лексичними немежами
- +1 за використання винятків
І якщо ви можете придумати більше, можете відредагувати це питання, щоб додати його до списку.
Чи можна вирішити цю проблему без використання винятків та без використання глобальних на зразок vars
та locals
? Я підозрюю, що це може, хоча я ще не зрозумів, як саме ...
X
, але є й інші варіанти.