Python School
82.3K subscribers
2.4K photos
8 videos
572 links
Уроки по Python, которые упростят вам жизнь. Без идиотских туториалов.

Наши мемы для программистов: @conhum

Сотрудничество - @alivian

Канал сотрудничает с рекламным сервисом @Tgpodbor_official

РКН: clck.ru/3G6pBb
加入频道
Что не так с логическими значениями? (ч.1)

Изначально в Python не было bool типа (люди использовали 0 для false и ненулевое значение, такое как 1 для true). True, False и bool тип был добавлен в версиях 2.x, но для обратной совместимости True и False нельзя было сделать константами. Они просто были встроенными переменными, и их можно было переназначить.
Что не так с логическими значениями? (ч.2)

bool является подклассом int в Python. И, таким образом, True и False являются экземплярами int. Целочисленное значение True равно 1, а значение из False равно 0.
Что не так с логическими значениями? (ч.3)

Python 3 был обратно несовместим, проблема была наконец исправлена, и, таким образом, последний фрагмент не будет работать с Python 3.x!
Атрибуты класса и атрибуты экземпляра (ч.1)

Переменные класса и переменные в экземплярах класса внутренне обрабатываются как словари объекта класса. Если имя переменной не найдено в словаре текущего класса, выполняется поиск по нему в родительских классах.
Эти ребята объединили ChatGPT и Midjourney в бесплатного телеграм-бота!

Теперь вам не нужен VPN, платная подписка и кучу времени на ожидание. Этот бот сгенерирует всё за 30 секунд. Цензуры в боте также нет.

Пиши код, учи английский, делай логотипы — в одно мгновение и без ограничений. Бот в закрепе: https://yangx.top/+rK7fmbDZxC0zYmQ0
Атрибуты класса и атрибуты экземпляра (ч.1)

Переменные класса и переменные в экземплярах класса внутренне обрабатываются как словари объекта класса. Если имя переменной не найдено в словаре текущего класса, выполняется поиск по нему в родительских классах.
Python-разработчики — одни из самых востребованных IT-специалистов на рынке. Они создают веб-приложения и чат-ботов, автоматизируют процессы. По данным HeadHunter, больше 8 000 компаний ищут специалистов разных уровней.

Зарегистрируйтесь на буткемп прямо сейчас и получите гайд по профессии. Из него узнаете, где используют Python, почему это идеальный язык для новичка и что думают о Python опытные разработчики. Подробная программа: https://epic.st/DHr--9

Что особенного в буткемпе по Python:
— Подходит новичкам — от вас не требуется знаний и опыта в IT.
— 4 крутых проекта для портфолио.
— Практические задания для проверки знаний.
— Живое общение со спикером.
— 5 полезных материалов в подарок.
— Бессрочный доступ к видео.

Спикер — Анастасия Борнева, руководитель направления по исследованию данных в Сбере. Опыт в программировании более 12 лет. С 2018 года — эксперт по автоматизации процессов с помощью искусственного интеллекта в Сбере.

Успейте записаться и получить подарок!
Атрибуты класса и атрибуты экземпляра (ч.2)

+= Оператор изменяет изменяемый объект на месте, не создавая новый объект. Таким образом, изменение атрибута одного экземпляра влияет на другие экземпляры, а также на атрибут class.
Нет результата

Это ошибка в обработке CPython yield в генераторах и пониманиях.

Источник и объяснение можно найти здесь: https://stackoverflow.com/questions/32139885/yield-in-list-comprehensions-and-generator-expressions

Сообщение об ошибке по теме:https://bugs.python.org/issue10544

Python 3.8+ больше не допускает yield понимания внутри списка и выдает SyntaxError.
Уступая от ... return! (ч.1)

Куда "wtf" делся? Это из-за какого-то особого эффекта yield from?

Начиная с Python 3.3, стало возможным использовать return инструкцию со значениями внутри генераторов (см. PEP380). В официальных документах говорится, что,
"... return expr в генераторе возникают причины StopIteration(expr), которые возникают при выходе из генератора".
Уступая от ... return! (ч.2)

В случае с some_func(3), StopIteration возникает в начале из-за return заявления. StopIteration Исключение автоматически перехватывается внутри list(...) оболочки и for цикла. Следовательно, два приведенных выше фрагмента приводят к пустому списку.

Чтобы получить ["wtf"] от генератора some_func, нам нужно перехватить StopIteration исключение,
Nan-рефлексивность (ч.1)

'inf' и 'nan' - это специальные строки (без учета регистра), которые при явном приведении к float типу используются для представления математической "бесконечности" и "не числа" соответственно.

Поскольку, согласно стандартам IEEE NaN != NaN, соблюдение этого правила нарушает предположение о рефлексивности элемента коллекции в Python, т. Е. если x является частью коллекции, подобной list, реализации, подобные comparison, основаны на предположении, что x == x.
Nan-рефлексивность (ч.2)

Из-за прошлого предположения сначала сравнивается идентификатор (поскольку это быстрее) при сравнении двух элементов, а значения сравниваются только тогда, когда идентификаторы не совпадают.

Поскольку идентификаторы x и y различны, учитываются значения, которые также различны; следовательно, сравнение возвращается False на этот раз.
Чтение файлов и запись в них

Чтобы выполнить любую из операций чтения и записи, нам нужно сделать три основных шага:

Открыть файл
Выполнить операцию
Закрыть файл
Мы можем проделывать эти шаги, используя два паттерна. Объяснить их на словах сложно, но мы сделаем это при помощи кода.
Изменение неизменяемого! (ч.1)

Это может показаться тривиальным, если вы знаете, как работают ссылки в Python.

Цитирую из https://docs.python.org/3/reference/datamodel.html

Неизменяемые последовательности Объект неизменяемого типа последовательности не может измениться после его создания. (Если объект содержит ссылки на другие объекты, эти другие объекты могут быть изменяемыми и могут быть изменены; однако коллекция объектов, на которые непосредственно ссылается неизменяемый объект, не может измениться.)
Новички-бэкендеры часто выбирают между Java и Python. На бесплатном вебинаре Яндекс Практикума разберёмся, чем отличаются эти языки.

→ 22 мая в 19:00

Вести вебинар будут действующие программисты — эксперты и выпускники Практикума. Они расскажут:
— что это за языки и зачем нужны;
— какой язык подойдёт для игр, корпоративных приложений, машинного обучения или автоматизации;
— какие сложности есть в изучении;
— как выбрать язык под себя;
— какие специалисты нужнее на рынке труда.

В конце встречи можно будет задать вопросы и получить совет.
→ Приходите на встречу, чтобы сделать первый шаг к карьере.
Изменение неизменяемого! (ч.2)

+= оператор изменяет список на месте. Назначение элемента не работает, но когда возникает исключение, элемент уже был изменен на месте.

Также есть объяснение в официальном FAQ по Python.
Исчезающая переменная из внешней области (ч.1)

Когда исключение было назначено с использованием as target, оно очищается в конце except предложения.

Это означает, что исключению должно быть присвоено другое имя, чтобы иметь возможность ссылаться на него после предложения except. Исключения удаляются, потому что с привязкой к ним обратной трассировки они образуют ссылочный цикл с фреймом стека, сохраняя все локальные файлы в этом фрейме живыми до тех пор, пока не произойдет следующая сборка мусора.
Исчезающая переменная из внешней области (ч.2)

Эти предложения не ограничены в Python. Все в примере присутствует в той же области видимости, а переменная e была удалена из-за выполнения except предложения. То же самое не относится к функциям, которые имеют свои отдельные внутренние области.

В Python 2.x имя переменной e присваивается Exception() экземпляру, поэтому при попытке печати ничего не выводится.
Таинственное преобразование типа ключа (ч.1)

И объект, s и строка "s" имеют одинаковое значение, потому что SomeClass наследуют hash метод str класса.

SomeClass("s") == "s" вычисляется как, True потому что SomeClass также наследует eq метод от str класса.