Найти - Пользователи
Полная версия: Тема на счет логики в Py 2.7
Начало » Python для экспертов » Тема на счет логики в Py 2.7
1
DamMercul
Недавно наткнулся на одну статью на Хабрахабре про пасхалки в python'е(в основном 2.x)
И в ней один пункт гласил, что в 2.7 версии лог. константы True и False не были константами,
и их можно менять. Я решил проверить:
 True_ = True
False_ = False
True = False_
False = True_  # Сделал так, чтобы переменные поменялись, так ка до этого присвоения True == False
# И тогда True и False будут = False
print([0, 1][True])
И тут он мне выдал 1. Я в шоке, ведь True = False, а False = True. Тут по идее должена была начаться “так называемая рекурсия”
Но этого не произошло. Почему?
FishHook
 >>> True = 0
>>> False = 1
>>> True
0
>>> False
1
>>> if False:
...     print "WTF?"
... 
WTF?
DamMercul
А что насчет:
 print(True == False)
FishHook
Да нет тут никакого шаманства. True и False - это целочисленные значения, и как любые другие неизменяемые значения они передаются и присваиваются по значению, а не по ссылке. Таким образом когда вы делаете True = 0, вы просто определяете новую переменную с именем True в локальной области видимости. Ни на что системное это не повлияет. И даже True == False все равно будет давать “системное” значение константы, а не то, которое вы определили в своем коде.
FishHook
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB