EasyPython🐍
68 subscribers
590 photos
4 links
Примеры и по Python, которые упростят вам жизнь.
Download Telegram
Локальная (Local) и глобальная (Global)

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

Заполучить вторую переменную local в сниппете ниже можно только при вызове func().
Сделать список плоским

Ох уж эти списки, состоящие из списков. Как бы их сделать попроще, выстроить в один ряд? Для этого тоже есть решение.

В третьей строке код проверяет, не является ли элемент списком. Если да, то использует метод extend() для расширения этим элементом итогового списка, если нет — то присоединяет его как одиночный элемент методом append().

Также в этой строке функция вызывает сама себя и, в случае списков, состоящих из списков, «проваливается» в них до тех пор, пока не доберётся до элементов, не являющихся списками. Это называется рекурсией.
Что нового в Python 3.12. Псевдонимы типов

Если мы объявим кортеж Point, который состоит из двух чисел с плавающей запятой, и собираемся создавать его экземпляры, с этим поможет инструкция type.
Что нового в Python 3.12. Перезапись декоратора

Если у нас есть класс Base c методом get_color(), и в наследном классе GoodChild мы хотим эту функцию переопределить, то инструкцией @override это сделать очень просто.
Что нового в Python 3.12. TypedDict для определения типов kwargs

**Если вам доводилось налегать на kwargs (keyword arguments – аргументы c ключевыми словами), то вы помните, что оператор двойная звездочка издавна упаковывает аргументы, переданные по имени, в словарь.

Теперь мы можем использовать TypedDict (буквально – словарь с заданными типами значений) для того, чтобы такие аргументы получили большую свободу типов.
Сила «однострочников» (One-Liners)

Вы устали пробираться между строк кода и теряться в условных конструкциях? Тогда, однострочники Python — это то, что вам нужно
Что нового в Python 3.12. Порядок слов в инструкции импорта

В крайней версии Python 3.12, наконец, стало возможным импортировать модули в адекватном для английского языка порядке слов.
Что нового в Python 3.12. Обратная косая черта в f-строках

До Python 3.12 использовать backslash в интерполируемых строках было нельзя. Теперь же мы смело можем внедрять и разрывы строк (\n), и переносы кареток (\r), и другие подобные символы.
Объединение скриптов Python и Shell

Теперь это то, что вы не можете сделать с C или C ++. Если вы парень с открытым исходным кодом, то вы наверняка используете Linux в качестве основной операционной системы или, по крайней мере, двойную загрузку. Итак, Linux уже включает Python. И python чрезвычайно совместим с Linux. Это дает нам преимущество их компиляции и объединения. Вы можете просто создать сценарий, который может работать как обычный сценарий Unix, а также интерпретируемый код Python одновременно.
Что нового в Python 3.12. Переиспользование кавычек в f-строках

Теперь напрягать внимание, чтобы вложить в строку объект в кавычках, не нужно. Система поймет, где открывающая, а где — закрывающая кавычка, любое количество раз.
Что нового в Python 3.12. Улучшенный подсказки для импорта

Если вы забыли подтянуть библиотеку инструкцией import, то теперь интерпретатор вежливо подскажет (‘did you forget...’) и укажет на опечатки в названии подключаемого модуля.
Защита от SQL-инъекций

Безопасники скажут вам, что: внутрь текста (например, в поле анкеты) можно внедрить SQL-запрос и даже дропнуть базу данных. Но не дай бог нам с вами увидеть такое на проде.

Начиная с Python 3.11 мы можем использовать LiteralString во избежание таких уязвимостей.
Импорт

В версии Python 3.12 наконец стало возможным импортировать модули в адекватном для английского языка порядке слов!
TypeVarTuple

Допустим, мы создаём функцию convert_first_int(), которая возвращает кортеж практически неизменным, только первый элемент приводит к целочисленному типу.

TypeVarTuple представляет собой произвольный кортеж потенциально разных типов. Полезно, если функция имеет дело только с первым элементом кортежа, и нам «разрешит» любые оставшиеся типы.
Pretty Print словаря

Выводить многоуровневые словари с print() — боль: разрывы строк исчезнут, файл станет нечитаемым.

Но встроенная утилита pprint, выдаст в командной строке «причёсанный» словарь.
Включение генераторов, сетов

Раньше был эффективный способ генерировать списки — «списковое включение» (List Comprehension).

Оказывается, этому поддаются и другие составные типы — генераторы и сеты.
Оператор match для проверки типа

Теперь освоение новых библиотек у вас точно ускорится.

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

Если мы объявили две переменные, но не задали любой из них значение, то с помощью оператора := (Walrus Operator) можно спасти программу от падения и добавить обрабатывающую логику. В первом случае, в переменные name1, name2 мы ничего не записали, значит, программа зайдет в блок else.

Во втором случае заполнена только одна из переменных, но программа отработает без ошибки.
try / except + else + finally

Мастхэв для начинающих питонистов — пара try / except, обработчик исключений. Шикарным дополнением к такому блоку является, на мой взгляд, else: он опишет поведение программы на случай других ошибок, которых может быть немало!

Более того, добавив finally, вы выполните завершающие работы, например, скомандуете выслать уведомление
Автоматическое добавление ключа словарю

Если создать словарь средствами collections.defaultdict, добавить хотя бы один элемент, а затем обратиться к несуществующему ключу.