Обновить

Два факта об int в Python Один забавный факт привел меня к открытию другого :) Читал Fluent Python и наткнулся на...

Время на прочтение2 мин
Охват и читатели714
Всего голосов 11: ↑10 и ↓1+9
Комментарии15

Комментарии 15

Нижние подчеркивания

А какие ещё бывают подчёркивания? Средние? Верхние?

нижнее и двойное в питоне

Почему тогда оно не «двойное нижнее подчеркивание»? А если «двойное подчеркивание», то обычное просто «подчеркивание» (ну или одинарное), а никак не нижнее.

Спасибо! ПоЯндексил. Наконец-то узнал, что проблема в кривых переводчиках. Low line - нижняя линия, а никак не нижнее подчеркивание. Нижнее подчеркивание избыточно для русского языка, так как нельзя что-то подчеркнуть не снизу.

можно, если это фигура речи, например. шах и мат)

"Кеш малых чисел "
дело не в кеше, == сравнивает значения, в случае с is, помимо значения проверяется одна и та же ли область памяти
Поскольку переменные разные (но значения одинаковые), сравнение по значению дает True, is - нет, разные области памяти

я про это и пишу) все, что в кеш диапазоне и с одинаковым значением, при связывании с переменными будет указывать на один объект и is вернет True

Отличные примеры! Читаемость через _ - мастхэв, о котором многие забывают. А интернирование интов - отличная тема, чтобы показать, как Python работает под капотом.

Можно также с генератором.

x, y = 250, 250
gen = (x + i is y + i for i in range(11))
for result in gen:
    print(result)

Интересно также что это работает со строками

v = '100' 
x = int(v)+1
y = int(v)+1
print(x is y)

оказывается true

про строки не совсем пример понял) вы же присваиваете x и y числовое значение в пределах кешированного диапазона. Тут и не может ничего отличаться, неважно, какое значение было связано с v.

Размер кеша в новых версиях поменялся

Проверял в 3.14.3. Вижу тоже самое, что и в 3.13.11, на котором пишу. Гугл и чатгпт со мной согласны:

```

x=-7, y=-7, x is y False
x=-6, y=-6, x is y False
x=-5, y=-5, x is y True
x=-4, y=-4, x is y True

...
x=255, y=255, x is y True
x=256, y=256, x is y True
x=257, y=257, x is y False
x=258, y=258, x is y False

Класс, добавлю в пост!

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации