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

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

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

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

РКН: clck.ru/3G6pBb
加入频道
Ладно, Python, ты можешь заставить меня летать?

antigravity модуль является одним из немногих пасхальных яиц, выпущенных разработчиками Python.

import antigravity открывает веб-браузер, указывающий на классический комикс XKCD о Python.

Ну, это еще не все. Внутри пасхального яйца есть еще одно пасхальное яйцо. Если вы посмотрите на код, там определена функция, предназначенная для реализации алгоритма геохеширования XKCD.
goto но почему?

Рабочая версия goto на Python была анонсирована в качестве первоапрельской шутки 1 апреля 2004 года.

Текущие версии Python не имеют этого модуля.

Хотя он и работает, но, пожалуйста, не используйте его. Вот причина, почему goto его нет в Python.
Приготовьтесь!

future Модуль обычно используется для предоставления функций из будущих версий Python. Однако "будущее" в этом конкретном контексте звучит иронично.

Это пасхальное яйцо, посвященное чувствам сообщества по этому вопросу.

Код на самом деле присутствует здесь, в future.c файле.

Когда компилятор CPython сталкивается с инструкцией future, он сначала запускает соответствующий код в future.c, прежде чем рассматривать его как обычную инструкцию import .
Давайте познакомимся с дружелюбным дядей по языку на всю жизнь

Это относится к PEP-401, выпущенному 1 апреля 2009 года (теперь вы знаете, что это значит).

Цитирую из PEP-401

Учитывая, что оператор неравенства != в Python 3.0 был ужасной ошибкой, вызывающей боль в пальцах, FLUFL восстанавливает оператор <> diamond в качестве единственного написания.
Сколько времени может работать код

Вы не задумывались, сколько именно времени занимает работа кода в рамках одной ячейки?

Магическая команда time позволяет получить всю необходимую информацию о времени.
Сколько времени может работать код

Вы не задумывались, сколько именно времени занимает работа кода в рамках одной ячейки?

Магическая команда time позволяет получить всю необходимую информацию о времени.
uuid

Стандартный модуль uuid — быстрый и простой способ сгенерировать UUID (universally unique identifier, глобально уникальный идентификатор).

Так мы создаём случайное 128-битное число, которое почти наверняка будет уникальным.

Существует более 2¹²² возможных UUID. Это более 5 ундециллионов или 5,000,000,000,000,000,000,000,000,000,000,000,000.

Вероятность нахождения дубликатов в заданном наборе крайне мала. Даже при наличии триллиона UUID вероятность того, что среди них есть дубликат, гораздо меньше, чем один к миллиарду.

Вполне недурно для двух строк кода.
Виртуальные среды

И так к нашему счастью, в Python есть поддержка виртуальных сред, которые позволяют взять лучшее от двух миров.

Так же вы теперь можете иметь разные независимые версии Python на одной машине
Давно хотели просмотреть содержимое внешнего файла?

Часто вам может понадобиться скопировать в свой код несколько строк кода из внешнего файла. Команда %pycat избавит вас от долгой процедуры извлечения определенных данных из файла и их копирования в другой файл. Она позволяет просматривать содержимое любого файла в любом каталоге.
Как скопировать всё содержимое внешнего файла?

В большинстве случаев возникает необходимость скопировать содержимое вашей ячейки в скрипт python или текстовый файл непосредственно из вашего блокнота Jupyter.

Вместо того чтобы копировать все и создавать новый файл, вы можете напрямую экспортировать свои данные, добавив команду writefile в ячейку перед кодом.
else - Предложение для циклов

Наверняка вы знаете, что в пайтоне для циклов for и while предусмотрен блок else. И с этим блоком возникает много путаницы, потому что его действие на первый взгляд неинтуитивно. Но с этим легко справиться.

else Предложение после цикла выполняется только тогда, когда после всех итераций нет явного break. Вы можете думать об этом как о предложении "nobreak".
Многоточие

В Python Ellipsis это глобально доступный встроенный объект, который эквивалентен ... .

>>> ...
Ellipsis

В основном многоточие используются для нескольких целей,

1) В качестве заполнителя для кода, который еще не был написан (точно так же, как pass инструкция)
2) В синтаксисе нарезки для представления полных фрагментов в оставшемся направлении
else - Предложение в обработке исключений

При написании кода по обработке помимо необязательного finally блока есть еще и необязательный else блок. Напомню, что этот блок кода выполняется если try блок завершился успешно, без летящих исключений.

Зачем нужен else блок, если все можно поместить в try блок?

Пока мое понимание на уровне правила: Если понадобился else блок, то код функции сложноват. Код в else следует поместить в отдельный метод и вызывать не в том куске кода, где хочется написать else, а уровнем по выше, т.е. более высокоуровневой функции.
Inpinity

Как можно представить бесконечное число в python? Независимо от того, какое число вы вводите в программу, ни одно число не должно быть больше этого представления бесконечности.

Это возможно реализовать с помощью inpinity.

При этом хэш бесконечности равен 10⁵ x π. Интересно, что хэш float('-inf') в Python 3 равен "-10⁵ x π", тогда как в Python 2 "-10⁵ x e".
Давайте переделаем (ч.1)

Искажение имен используется, чтобы избежать конфликтов именования между различными пространствами имен.

В Python интерпретатор изменяет (искажает) имена членов класса, начинающиеся с __ (двойное подчеркивание, также известное как "dunder") и не заканчивающиеся более чем одним завершающим подчеркиванием, добавляя _NameOfTheClass впереди.
Давайте переделаем (ч.2)

Итак, чтобы получить доступ к атрибуту __honey в первом фрагменте, нам пришлось добавить _Yo в начало, что предотвратило бы конфликты с атрибутом того же имени, определенным в любом другом классе.

Но тогда почему это не сработало во втором фрагменте? Потому что искажение имен исключает имена, заканчивающиеся двойным подчеркиванием.
Открываем локально поисковую строку Google

Порой мы так глубоко погружаемся в написание кода, что нам неохота открывать браузер для поиска нужной информации. Установив потрясающую библиотеку google, можно делать запрос в поисковик прямо в консоли.
Загрузка материалов из Instagram

Всем нам часто попадаются хорошие посты в Instagram, которые хотелось бы сохранить на своем устройстве, чтобы иметь офлайн-доступ. Это можно сделать при помощи библиотеки instaloader.
Выводим аудио дорожку из видео

Бывает так, что у нас есть mp4-файл, но нам нужна только звуковая дорожка из него. Скажем, чтобы сделать другое видео с таким же звуковым сопровождением. Эта проблема решается установкой библиотеки moviepy.
Давайте переделаем (ч.3)

Третий фрагмент также был следствием искажения имени. Имя __variable в инструкции return __variable было искажено до _A__variable, которое также является именем переменной, объявленной нами во внешней области видимости.

Кроме того, если искаженное имя длиннее 255 символов, произойдет усечение.