*** id(None) # 140705445104448 id(print()) # 140705445104448 id(print()) == None # False id(print()) is None # False Как видим, у id(None) и id(print()) – один адрес, но при этом id(print()) не равно None!.. Это одна из самых интересных и неочевидных особенностей языка Python, которая касается объекта None и его сравнения с другими объектами. *** 1) id(None) • В Python объект None является синглтоном (singleton). Это означает, что в рамках одного процесса (одной запущенной программы) существует только один-единственный экземпляр объекта None. • Всякий раз, когда мы запрашиваем None, то получаем ссылку на этот один и тот же объект в памяти. • Поэтому, когда мы вызываем id(None), то получаем адрес этого единственного объекта. *** 2) id(print()) • По умолчанию, если вызвать функцию print() без аргументов, она выведет символ новой строки (\n) в консоль (то есть пустую строку). • Результатом этого вызова является объект None (в Python любая функция, которая не возвращает з
Почему у id(None) и id(print()) – один адрес, но id(print()) не равно None?
3 дня назад3 дня назад
7
3 мин