Напишите несколько строк кода 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, но есть и другие варианты.