Веб-версияОткрыть в Telegram

ПостРешил расширить канал ещё одной тематикой - занимательными задачками.

21 ноября 2023
К
Коробка с питоном
Ссылка
нажмите — покажем
Решил расширить канал ещё одной тематикой - занимательными задачками. Пока что буду писать про те, которые встречались на тех. собеседованиях. Они не всегда будут адекватные, но что уж есть :) А начнём, как полагается с классики. Надо объяснить следующее поведение: >>> a = 256 >>> b = 256 >>> a is b True # ??? >>> a = 257 >>> b = 257 >>> a is b False # ??? Вопрос в том, что здесь творится с ссылками. Разберём самую первую часть. Пробуем получить id объектов: >>> a = 256 >>> b = 256 >>> id(a), id(b) (2214170730704, 2214170730704) На вопрос, почему у них одинаковые идентификаторы ответит деталь реализации PyLong_FromLong (для искушенных читать можно читать отсюда), которая указывает, что интерпретатор хранит массив целочисленных объектов для всех чисел в диапазоне от -5 до 256. Поэтому, когда мы создаем переменную с числом в этом диапазоне он просто отдает ссылку на уже существующий объект. Микрооптимизация, при чём очень важная - так уж получилось что числа из этого диапазона используются чаще всего. В Java есть похожая оптимизация, там такой диапазон составляет от -128 до 127, но есть нюансы. Второй вопрос отпадает сам собой (будут разные ссылки), но что будет если мы создадим файл с следующим содержимым и запустим его: a = 257 b = 257 print(a is b) # True А вот это уже нюанс работы нашего REPL. Каждая написанная нами строка в нём разбирается отдельно. Но при запуске через файл Python имеет возможность применить дополнительные оптимизации для констант, так как он видит сразу весь код - в этом и различие. А какие ещё неочевидные моменты вы знаете с REPL или int'ами? Пишите в комменты, обсудим :) #std #задачки
9 · 892 ·

Рядом в ленте

ККоробка с питономPSF и JetBrains запустили своё ежегодное исследование Python Developers Survey 2023. Погнали заполнять! 👇 https://survey.alchemer.com/s3/7554174/python-developeККоробка с питономДа, у нас есть тесты. А толку? Супер-мега-гига экслюзивный доступ к записи моего доклада с прошедшего PiterPy. Организаторы разрешили выложить не дожидаясь след
это сообщение
ККоробка с питономСегодня у нас простенькая задачка, а то пятница, все отдыхать хотят, я понимаю. Есть следующий код: def test(): try: return 1 finally: return 2 Вопрос - что верККоробка с питономАвтор Pydantic совершенно недавно начал разрабатывать ещё один проект... И на этот раз он решил сделать UI фронтенд-фреимворк который назвал FastUI. Если отвеча
ККоробка с питономКоробка с питоном@boxwithpython · канал · Технологии
488подписчиков154постов в индексе
Лента площадки Открыть в Telegram

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Чего мы не делаем · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем