uk
Feedback
Just Python

Just Python

Відкрити в Telegram

🐍Простое изучение Python. Ссылка: @Portal_v_IT Сотрудничество: @oleginc, @tatiana_inc Канал на бирже: telega.in/c/justpython_it РКН: clck.ru/3MnbSc

Показати більше
9 892
Підписники
-124 години
-127 днів
-5730 день
Архів дописів
Методы: staticm Необходимость создавать новые объекты "метода" каждый раз, когда Python вызывает методы экземпляра, и необход
Методы: staticm Необходимость создавать новые объекты "метода" каждый раз, когда Python вызывает методы экземпляра, и необходимость каждый раз изменять аргументы для вставки self сильно повлияла на производительность. CPython 3.7 решил это, введя новые коды операций, которые имеют дело с вызывающими методами без создания объектов временных методов. Это используется только тогда, когда фактически вызывается доступная функция, поэтому фрагменты здесь не затрагиваются и по-прежнему генерируют методы :) Канал в Max 🇷🇺 #theory // Just Python

Самый недооценённый навык в 2026 году – это вайбкодинг Еще недавно про него толком никто не знал, а сейчас нейронки уже собир
Самый недооценённый навык в 2026 году – это вайбкодинг Еще недавно про него толком никто не знал, а сейчас нейронки уже собирают проекты от идеи до релиза и экономят десятки часов работы. И те, кто сейчас разберутся во всём этом, будут зарабатывать в разы больше тех, кто делает всё вручную. А чтобы научиться вайбкодить и не совершать ошибки - читайте канал AI-архитектор. Автор уже открыл доступ к бесплатному уроку, где разобрал: что такое вайбкодинг, какие связки реально приносят от 100 000 ₽ за проект и почему 2026 год — последнее окно лёгкого входа в нишу. Через 24 часа урок станет платным, поэтому подписывайтесь и забирайте доступ в закрепе: https://t.me/+juHqwg5Aq-QzOGIy

Методы: classm (ч.2) Объект метода сравнивается равным, когда обе функции равны, а связанные объекты одинаковы. Так o1.method
Методы: classm (ч.2) Объект метода сравнивается равным, когда обе функции равны, а связанные объекты одинаковы. Так o1.method == o1.method это правдиво, хотя и не тот же объект в памяти. staticmethod преобразует функции в дескриптор "no-op", который возвращает функцию как есть. Объекты метода никогда не создаются, поэтому сравнение с is является правдивым. Канал в Max 🇷🇺 #theory // Just Python

Методы: classmethod (ч.1) Обращение к атрибуту несколько раз каждый раз создает объект метода! Поэтому o1.method is o1.method
Методы: classmethod (ч.1) Обращение к атрибуту несколько раз каждый раз создает объект метода! Поэтому o1.method is o1.method никогда не бывает правдивым. Доступ к функциям как атрибутам класса (в отличие от экземпляра), однако, не создает методы; так SomeClass.method is SomeClass.method и есть на самом деле. Канал в Max 🇷🇺 #theory // Just Python

Равенство методов и идентичность (ч.2) Обращаясь classm дважды, мы получаем одинаковый объект, но не тот же? Давайте посмотри
Равенство методов и идентичность (ч.2) Обращаясь classm дважды, мы получаем одинаковый объект, но не тот же? Давайте посмотрим, что происходит с экземплярами SomeClass Обращение к classm or method дважды создает одинаковые, но не одинаковые объекты для одного и того же экземпляра SomeClass. Канал в Max 🇷🇺 #theory // Just Python

Равенство методов и идентичность (ч.1) Функции - это дескрипторы. Всякий раз, когда к функции обращаются как к атрибуту, вызы
Равенство методов и идентичность (ч.1) Функции - это дескрипторы. Всякий раз, когда к функции обращаются как к атрибуту, вызывается дескриптор, создающий объект метода, который "связывает" функцию с объектом, владеющим атрибутом. При вызове метод вызывает функцию, неявно передавая связанный объект в качестве первого аргумента (именно так мы получаем self в качестве первого аргумента, несмотря на то, что не передаем его явно). Канал в Max 🇷🇺 #theory // Just Python

Отношения подклассов Отношения подклассов не обязательно являются транзитивными в Python. Любому разрешено определять свой со
Отношения подклассов Отношения подклассов не обязательно являются транзитивными в Python. Любому разрешено определять свой собственный, произвольный subclasscheck в метаклассе. Когда issubclass(cls, Hashable) вызывается, он просто ищет не ложный "hash" метод в cls или что-либо, от чего он наследуется. Поскольку object является хешируемым, но list не является хешируемым, это нарушает отношение транзитивности. Канал в Max 🇷🇺 #theory // Just Python

Проблема с куриным яйцом (ч.3) Чтобы быть более точным, следующие взаимосвязи не могут быть воспроизведены в чистом Python: К
Проблема с куриным яйцом (ч.3) Чтобы быть более точным, следующие взаимосвязи не могут быть воспроизведены в чистом Python: Класс A является экземпляром класса B, а класс B является экземпляром класса A. Класс A является экземпляром самого себя. Эти отношения между object и type (оба являются экземплярами друг друга, а также самих себя) Канал в Max 🇷🇺 #theory // Just Python

Проблема с куриным яйцом (ч.2) Среди object и type нет реального базового класса. Путаница в приведенных выше фрагментах возн
Проблема с куриным яйцом (ч.2) Среди object и type нет реального базового класса. Путаница в приведенных выше фрагментах возникает из-за того, что мы думаем об этих взаимосвязях (issubclass и isinstance) в терминах классов Python. Связь между object и type не может быть воспроизведена в чистом python. Канал в Max 🇷🇺 #theory // Just Python

Проблема с куриным яйцом (ч.1) Итак, какой "окончательный" базовый класс? type это метакласс в Python. Все является object на
Проблема с куриным яйцом (ч.1) Итак, какой "окончательный" базовый класс? type это метакласс в Python. Все является object на Python, который включает в себя классы, а также их объекты (экземпляры). Класс type - это метакласс class object, и каждый класс (включая type) прямо или косвенно унаследован от object. Канал в Max 🇷🇺 #theory // Just Python

Переменная Шредингера (ч.3) Поскольку x это глобальное значение, мы можем изменить значение, которое funcs будет искать и воз
Переменная Шредингера (ч.3) Поскольку x это глобальное значение, мы можем изменить значение, которое funcs будет искать и возвращать, обновив x. Чтобы получить желаемое поведение, вы можете передать переменную цикла в качестве именованной переменной в функцию. Почему это работает? Потому что это определит переменную внутри области видимости функции. Он больше не будет обращаться к окружающей (глобальной) области видимости для поиска значений переменных, но создаст локальную переменную, которая хранит значение x на данный момент времени. Канал в Max 🇷🇺 #theory // Just Python

Переменная Шредингера (ч.2) При определении функции внутри цикла, которая использует переменную цикла в своем теле, закрытие
Переменная Шредингера (ч.2) При определении функции внутри цикла, которая использует переменную цикла в своем теле, закрытие функции цикла привязывается к переменной, а не к ее значению. Функция ищет x в окружающем контексте, вместо того, чтобы использовать значение x во время создания функции. Итак, все функции используют для вычислений последнее значение, присвоенное переменной. Мы можем видеть, что он использует x из окружающего контекста (т.е. не локальную переменную) с: Канал в Max 🇷🇺 #theory // Just Python

Переменная Шредингера (ч.1) Значения x были разными на каждой итерации до добавления some_func к funcs, но все функции возвра
Переменная Шредингера (ч.1) Значения x были разными на каждой итерации до добавления some_func к funcs, но все функции возвращают 6, когда они вычисляются после завершения цикла. Канал в Max 🇷🇺 #theory // Just Python

Крестики-нолики, где X побеждает с первой попытки! Когда мы инициализируем row переменную, эта визуализация объясняет, что пр
Крестики-нолики, где X побеждает с первой попытки! Когда мы инициализируем row переменную, эта визуализация объясняет, что происходит в памяти. И когда board инициализируется путем умножения row, вот что происходит внутри памяти (каждый из элементов board[0], board[1] и board[2] является ссылкой на один и тот же список, на который ссылается row). Мы можем избежать этого сценария здесь, не используя row переменную для генерации board. Канал в Max 🇷🇺 #theory // Just Python

is not ... не является is (not ...) is not это один двоичный оператор, и его поведение отличается от использования is и not р
is not ... не является is (not ...) is not это один двоичный оператор, и его поведение отличается от использования is и not разделенных. is not вычисляется, False если переменные по обе стороны от оператора указывают на один и тот же объект и True в противном случае. В примере (not None) вычисляется как True, поскольку значение None находится False в логическом контексте, поэтому выражение становится 'something' is True. Канал в Max 🇷🇺 #theory // Just Python

Несоответствие во времени оценки (ч.3) Хорошо, следуя логике, обсуждавшиеся до сих пор, не должно ли значение list(gen) в тре
Несоответствие во времени оценки (ч.3) Хорошо, следуя логике, обсуждавшиеся до сих пор, не должно ли значение list(gen) в третьем фрагменте быть [11, 21, 31, 12, 22, 32, 13, 23, 33]? (потому что array_3 и array_4 будут вести себя точно так же, как array_1). Причина, по которой были обновлены (только) array_4 значения, объясняется в PEP-289. Немедленно вычисляется только самое внешнее выражение for, остальные выражения откладываются до запуска генератора. Канал в Max 🇷🇺 #theory // Just Python

Несоответствие во времени оценки (ч.2) Различия в выходных данных g1 и g2 во второй части обусловлены тем, как переменным arr
Несоответствие во времени оценки (ч.2) Различия в выходных данных g1 и g2 во второй части обусловлены тем, как переменным array_1 и array_2 повторно присваиваются значения. В первом случае, array_1 привязан к новому объекту [1,2,3,4,5] и поскольку in предложение вычисляется во время объявления, оно все еще ссылается на старый объект [1,2,3,4] (который не уничтожается). Во втором случае назначение фрагмента для array_2 обновляет тот же самый старый объект [1,2,3,4] до [1,2,3,4,5]. Следовательно, g2 и array_2 все еще имеют ссылку на один и тот же объект (который теперь был обновлен до [1,2,3,4,5]). Канал в Max 🇷🇺 #theory // Just Python

Несоответствие во времени оценки (ч.1) В выражении генератора in предложение вычисляется во время объявления, но условное пре
Несоответствие во времени оценки (ч.1) В выражении генератора in предложение вычисляется во время объявления, но условное предложение вычисляется во время выполнения. Итак, перед выполнением, array повторно присваивается списку [2, 8, 22], и поскольку из 1, 8 и 15 только количество 8 больше 0, генератор выдает только 8. Канал в Max 🇷🇺 #theory // Just Python

Для чего? (ч.2) Оператор присваивания i = 10 никогда не влияет на итерации цикла из-за способа работы циклов for в Python. Пе
Для чего? (ч.2) Оператор присваивания i = 10 никогда не влияет на итерации цикла из-за способа работы циклов for в Python. Перед началом каждой итерации следующий элемент, предоставляемый итератором (range(4) в данном случае) распаковывается и присваивается переменным целевого списка (i в данном случае). Канал в Max 🇷🇺 #theory // Just Python

Qubu × Гравитация запускают крупнейший ИИ-конкурс России. Призовой фонд — 5 000 000 рублей. Хотите внедрить ИИ в свой бизнес? Подайте заявку - опишите бизнес задачу, которую возможно решить с помощью ИИ. Из отобранных заявок будет организован конкурс, где ведущие разработчики страны создадут ИИ-решение для вашего бизнеса в рамках хакатона. Разрабатываете ИИ-решения? Загрузите модель и поучаствуйте в конкурсе за звание лучшего отраслевого решения России. Подробное: qubu.ai