Форум сайта python.su
Недавно наткнулся на одну статью на Хабрахабре про пасхалки в python'е(в основном 2.x)
И в ней один пункт гласил, что в 2.7 версии лог. константы True и False не были константами,
и их можно менять. Я решил проверить:
True_ = True False_ = False True = False_ False = True_ # Сделал так, чтобы переменные поменялись, так ка до этого присвоения True == False # И тогда True и False будут = False print([0, 1][True])
# Life loop while alive: if (fun > boredom) and money: pass_day(fun, boredom, money) continue else: break
Офлайн
>>> True = 0 >>> False = 1 >>> True 0 >>> False 1 >>> if False: ... print "WTF?" ... WTF?
Офлайн
А что насчет:
print(True == False)
# Life loop while alive: if (fun > boredom) and money: pass_day(fun, boredom, money) continue else: break
Офлайн
Да нет тут никакого шаманства. True и False - это целочисленные значения, и как любые другие неизменяемые значения они передаются и присваиваются по значению, а не по ссылке. Таким образом когда вы делаете True = 0, вы просто определяете новую переменную с именем True в локальной области видимости. Ни на что системное это не повлияет. И даже True == False все равно будет давать “системное” значение константы, а не то, которое вы определили в своем коде.
Офлайн
Офлайн