Напишіть кілька рядків коду 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, але є й інші варіанти.