Разъяснивший Python
8.17K subscribers
2.43K photos
40 videos
30 files
2.28K links
Твой проводник в омут Python'а

Ссылка: @Portal_v_IT

Сотрудничество: @oleginc, @tatiana_inc

Канал на бирже: https://telega.in/c/python_pssss
Download Telegram
Все разобрано? (ч.1)

Sorted Метод всегда возвращает список, а сравнение списков и кортежей всегда возвращает False результат на Python.

В отличие от этого, sortedметод reversed возвращает итератор. Почему? Потому что сортировка требует, чтобы итератор был либо изменен на месте, либо использовал дополнительный контейнер (список), тогда как реверсирование может просто работать путем повторения от последнего индекса к первому.

Разъяснивший Python
Получение имени текущей функции: inspect.currentframe()

Иногда при отладке или логировании полезно автоматически узнать, в какой функции сейчас выполняется код — без хардкода имени вручную.

Итог:
С помощью inspect.currentframe().f_code.co_name можно динамически получить имя текущей функции. Отлично подходит для логирования и отладки.

Разъяснивший Python
Объединение нескольких словарей без update()

Обычно для объединения словарей используют .update(), но с Python 3.9 можно делать это удобнее и читаемее — с помощью оператора |.

Итог:
Оператор | — лаконичный способ объединять словари. Второй словарь переопределяет ключи первого.

Разъяснивший Python
Приготовьтесь!

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

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

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

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

Разъяснивший Python
Давайте познакомимся с дружелюбным дядей по языку на всю жизнь

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

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

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

Разъяснивший Python
Сколько времени может работать код

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

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

Разъяснивший Python
Виртуальные среды

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

Так же вы теперь можете иметь разные независимые версии Python на одной машине

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

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

Разъяснивший Python
Как скопировать всё содержимое внешнего файла?

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

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

Разъяснивший Python
else - Предложение для циклов

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

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

Разъяснивший Python
Многоточие

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

>>> ...
Ellipsis

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

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

Разъяснивший Python
Inpinity

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

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

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

Разъяснивший Python
Давайте переделаем (ч.1)

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

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

Разъяснивший Python
👍1
Давайте переделаем (ч.2)

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

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

Разъяснивший Python
👍1
Открываем локально поисковую строку Google

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

Разъяснивший Python
🔥1
Выводим аудио дорожку из видео

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

Разъяснивший Python
Пропуск строк

Некоторые незападные символы выглядят идентично буквам английского алфавита, но интерпретатор считает их разными.

Встроенная ord() функция возвращает кодовую точку символа в Юникоде, а различные кодовые позиции кириллицы 'e' и латиницы 'e' оправдывают поведение нашего примера примера.

Разъяснивший Python
Телепортация

Обратите внимание, что массив numpy, созданный в energy_send функции, не возвращается, так что пространство памяти свободно для перераспределения.

numpy.empty() возвращает следующий свободный слот памяти без его повторной инициализации. Эта область памяти просто оказывается той же, которая была только что освобождена (обычно, но не всегда).

Разъяснивший Python
Давайте переделаем (ч.3)

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

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

Разъяснивший Python
Проверка аргументов функции без лишнего кода с functools.singledispatch

Когда нужно писать разные реализации одной функции в зависимости от типа аргумента, не спеши писать if isinstance(...) — есть элегантнее способ!

Итог:
singledispatch — способ реализовать полиморфизм для функций: избавляет от длинных ветвлений по типам, упрощает поддержку и расширение кода.

Разъяснивший Python