bulygin69 это забавная дисскусия, я даже прочитал вашу статью, не скажу что я все понял, но думаю основную мысль я уловил. А вот вы кажеться не понимаете как работает тот или иной ЯП вообще и в частности, пайтон.
Давайте по порядку рассмотрим ваш код :
Возможно с точки зрения математики
NULL = (False == False and False != False) так и есть, но это выражения нельзя просто взять и перенести в пайтон “в тупую” как это сделали вы:
y = (False == False and False != False)
потому что у пайтона свое понимание что такое False и True . Вы могли с тем же успехом написать y = False потому что для пайтона логическое выражение (False == False and False != False)
ВСЕГДА равно False а не какомуто абстрактному NULL
Идем дальше :
for i in x:
y = (i == i) + y
итак мы уже знаем что первоначально “у” нас False , (i == i) у нас
ВСЕГДА будет True. Это связано с тем как работает пайтон при сравнении. i это всего лишь переменная которая ссылается на некую область памяти. поскольку у вас слева и справа знака “==” переменные которые ссылаются на одну и ту же область памяти то интерпретатор делает вывод что они равны и возвращает True. C тем же успехом вы могли просто написать y = True + y.
Но как же оно работает? Дело в том что первоначально в пайтоне не было булевого типа. И програмисты использовали банальный 0 и 1. Когда таки решили что нужен булевый тип данных, уж не знаю, то ли для совместимости с предыдущими версиями, толи еще почему, решили что булевый тип будет наследовать от целочисленного. False стал равен 0 ,а True=1. Следовательно ваше y = True + y можно записать как y = 1 + y.
Код ниже делает ровно тоже самое что и ваш, только я убрал лишние операции результат которых
ВСЕГДА будет один и тот же.
def sum(x):
y = 0
for i in x:
y = 1 + y
return y
идем дальше
m = {'d', 9, True, None, 9, 'd'}
Множество не может содержать неуникальных элентов и ваше множество превращаеться в {9, None, ‘d’, True}еще на этапе создания обьекта, поэтому неудивительно что оно “работает”. Ваш код всего лишь подсчитывает колличество элементов множества ,такое учатся писать школьники на первых уроках по програмированию.
Поэтому если вы действительно хотите написать программу котороая будет реализовывать вашу логику, вам нужно писать чтото иное чем то что вы написали.