Українська
Відкрити в Telegram

ПостЧому 256 is 256 - True, а 257 is 257 - не завжди

28 вересня 2026
P
Python Nation🐍🇺🇦
Чому 256 is 256 - True, а 257 is 257 - не завжди У пайтоні є оператор is, який перевіряє не рівність значень, а те, чи це один і той самий обʼєкт у памʼяті. І тут ховається несподіванка: a = 256 b = 256 a is b # True a = 257 b = 257 a is b # False Значення однакові, а результат різний. Причина в тому, що CPython при старті створює й тримає в кеші всі малі цілі від -5 до 256. Вони використовуються постійно, тож інтерпретатор не робить нові обʼєкти щоразу - віддає ті самі. Число 257 у кеш не потрапляє, тому кожне таке присвоєння - новий обʼєкт. Звідси False. І ще нюанс: якщо написати 257 is 257 в одному рядку чи в одній функції, компілятор може сам згорнути константи, і вийде True. Тобто поведінка залежить від того, де саме стоїть код. Висновок простий: is для чисел використовувати не треба взагалі. Він про ідентичність обʼєкта, а не про значення. Для порівняння чисел завжди ==.
1 · 220 ·

Поруч у стрічці

PPython Nation🐍🇺🇦True - це насправді 1 Багато хто не знає, але bool у пайтоні це підклас int. Тобто True дорівнює 1, а False дорівнює 0. Ними навіть можна рахувати: True + True PPython Nation🐍🇺🇦__slots__ - коли обʼєктів багато За замовчуванням кожен обʼєкт у пайтоні тримає свій __dict__, тобто словник з атрибутами. Це зручно бо можна додати будь-який а
це повідомлення
PPython Nation🐍🇺🇦Чому None перевіряють через is, а не == У пайтоні прийнято писати if x is None, а не if x == None. І це не просто стиль. None - це єдиний обʼєкт на всю програмуPPython Nation🐍🇺🇦finally мовчки затирає твій return Погляньмо на функцію: def f(): try: return "from try" finally: return "from finally" f() # "from finally" Здавалося б, return
PPython Nation🐍🇺🇦Python Nation🐍🇺🇦@pythonnation · канал · Технології
1 925підписників184середнє охоплення поста
Стрічка майданчика Відкрити в Telegram

Відкрита публічна стрічка з пошукового індексу ChatCrawler — «Google по публічному Telegram»; оновлюється в міру обходу майданчика. Час — UTC.

Лише публічний контент, офіційний API Telegram. Про проєкт · Питання · Межі індексу · Прибрати сторінку з видачі · Каталог · Пошук · Як ми рахуємо