Python tricks | Хитрости Питона
5.75K subscribers
2.21K photos
26 videos
1 file
2.52K links
Здесь вы найдете лучшие практики и приёмы, которые используют опытные программисты.

Сотрудничество: @SIeep_Token

Мы на платформе: https://telegram.me/python_tricks

Ссылка на канал: https://t.me/+QayZf6ccsQllZTYy
Download Telegram
4 ситуации из жизни лямбда-функций в Python. Сортировка последовательности данных 

Первый допустимый вариант использования — сортировка последовательности данных при помощи встроенной функции sorted(). Если вы знакомы с методами списков объектов, то, скорее всего, вам известен похожий метод sort(), который может сортировать объекты в списке в нужном порядке. Функция sorted() используется во многих ситуациях. 

🔗 Python tricks
typing.Literal

typing.Literal — это тип данных, который позволяет указать не просто какой-то тип вроде str, int или float, а конкретное значение этого типа.

Например, Literal[42] означает, что в качестве значения ожидается только 42. Важно, что проверяется не только равенство значения, но и его тип (например, нельзя будет использовать False, если ожидается 0).

🔗 Python tricks
Функция itertools.chain()

Функция itertools.chain() в Python объединяет несколько итераторов в один. Она принимает в качестве аргумента один или несколько итераторов, и возвращает итератор, который последовательно возвращает элементы из этих итераторов.

Например, код сверху объединяет две строки в одну.

🔗 Python tricks
4 ситуации из жизни лямбда-функций в Python. Нахождение минимальных и максимальных значений 

Для нахождения минимального и максимального значений в наборе данных можно использовать две встроенные функции, а именно min() и max(). Принцип использования обоих методов идентичен. В большинстве случаев мы предоставляем итерируемый объект, состоящий из нескольких элементов. Задавая аргумент key, мы можем получить искомые минимальные и максимальные значения по тому же принципу, что и в случае с функцией sorted()

🔗 Python tricks
4 ситуации из жизни лямбда-функций в Python. Использование в качестве фабричной функции 

Вероятно, вам известно, что помимо встроенного типа словаря dict, в нашем распоряжении есть еще другой словарь под названием defaultdict. Этот класс является подклассом типа dict, который доступен в модуле collections. Конструктор defaultdict представляет собой defaultdict([default_factory[, ...]]). default_factory вызывается для создания значения при условии, что в словаре еще нет заданного ключа. 

🔗 Python tricks
string.capitalize

Метод capitalize() преобразует первый символ строки в прописную букву, а все остальные буквы алфавита в нижний регистр. Данный метод возвращает новую строку и не изменяет исходную строку.

🔗 Python tricks
Принцип открытости/закрытости (OCP)

Принцип открытости/закрытости (OCP) — один из основополагающих принципов объектно-ориентированного программирования (ООП), сформулированный Бертраном Мейером. Он гласит: Программные сущности (классы, модули, функции и т. п.) должны быть открыты для расширения, но закрыты для изменения.

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

🔗 Python tricks
Функция heapq.heapify()

Функция heapq.heapify() используется для преобразования списка в кучу (heap). Куча — это особая структура данных, представляющая собой полное бинарное дерево, в котором каждый родительский элемент меньше или равен своим дочерним элементам.

🔗 Python tricks
4 ситуации из жизни лямбда-функций в Python. Использование лямбда с функциями высшего порядка (не самый лучший способ) 

Под функциями высшего порядка подразумеваются такие функции, как map() и filter(). Важно помнить, что всё в Python является объектом, включая функции. Функции, принимающие другие функции в качестве аргументов или возвращающие их в качестве результата, называются функциями высшего порядка. 

🔗 Python tricks
Логирование в Python с помощью Logzero. Установка

Logzero — это пакет Python, созданный Крисом Хагером, который упрощает отображение информации и сведений об отладке в качестве оператора print в Python 2 и 3. Чтобы установить logzero с помощью pip, выполните следующий код.

🔗 Python tricks
Функция math.gcd()

Функция math.gcd() используется для вычисления наибольшего общего делителя (НОД) двух целых чисел. НОД — это наибольшее число, которое является делителем обоих чисел.

Синтаксис:
math.gcd(a, b)

Аргументы:
a: первое целое число
b: второе целое число

Возвращаемое значение:
целое число, являющееся НОД a и b

🔗 Python tricks
Ход короля

Даны две различные клетки шахматной доски. Напишите программу, которая определяет, может ли король попасть с первой клетки на вторую одним ходом. Программа получает на вход четыре числа от 1 до 8 каждое, задающие номер столбца и номер строки сначала для первой клетки, потом для второй клетки.

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

🔗 Python tricks
Шифрование и расшифровка паролей

Приведенный ниже скрипт выполняет шифрование и дешифрование текста с использованием пакета cryptography.

В приведенной выше реализации ключ шифрования генерируется с помощью метода Fernet.generate_key() и сохраняется в файле для дальнейшего использования.

Шифрование и дешифрование текста выполняются с использованием класса Fernet из пакета cryptography , где текст шифруется с помощью метода encrypt() и расшифровывается с помощью метода decrypt().

🔗 Python tricks
string.rjust

Метод rjust() выравнивает строку по правому краю до заданной ширины, используя указанный символ. Если ширина меньше или равна длине строки, возвращается исходная строка.

🔗 Python tricks
Логирование в Python с помощью Logzero. Запись логов в файл

Многие пользователи Python предпочитают записывать логи в файл. При запуске системы их можно просматривать для проверки ошибок и обслуживания. Вы также можете установить файл для сохранения всех лог-записей в legzero.

Мы импортируем логгер и лог-файл из logezero. Метод logfile используется, чтобы настроить лог-файл для сохранения хранящихся в логе записей.

🔗 Python tricks
Логирование в Python с помощью Logzero. Базовый пример

Импортируем логгер из logzero в файл python и попробуем 4 примера уровней логирования. Как видим, каждый уровень имеет свой цвет, что значительно упрощает его определение.

🔗 Python tricks
Функция math.gcd()

Функция math.gcd() используется для вычисления наибольшего общего делителя (НОД) двух целых чисел. НОД — это наибольшее число, которое является делителем обоих чисел.

Синтаксис:
math.gcd(a, b)


Аргументы:
a: первое целое число
b: второе целое число

Возвращаемое значение:
целое число, являющееся НОД a и b

🔗 Python tricks
Напишите функцию на Python, которая принимает на вход список чисел и возвращает наибольшую возрастающую подпоследовательность (непоследовательные числа, идущие в порядке возрастания) из исходного списка

Для решения этой задачи используется динамическое программирование. Мы создаем массив dp, где dp[i] представляет собой длину наибольшей возрастающей подпоследовательности, заканчивающейся в nums[i]. Затем мы выполняем двойной цикл, чтобы найти наибольшую длину для каждого элемента. После этого мы определяем саму подпоследовательность, начиная с наибольшей длины и двигаясь обратно по массиву dp.

Пример использования:
python
nums = [3, 12, 5, 8, 10, 2, 1]
result = longest_increasing_subsequence(nums)
print(result) # Output: [3, 5, 8, 10]


Эта функция найдет наибольшую возрастающую подпоследовательность из списка [3, 12, 5, 8, 10, 2, 1], которой будет [3, 5, 8, 10], и выведет ее в консоль.

🔗 Python tricks
Логирование в Python с помощью Logzero. Установка минимального уровня логирования

Установка уровня логирования предполагает выбор степени важности данного лог-сообщения. Изменить уровень логирования для обработчика файла можно с помощью аргумента loglevel в методе logfile.

В приведенном примере мы установили loglevel как warning. Следовательно все лог-записи ниже уровня warning не будут сохранены в лог-файл.

🔗 Python tricks
Логирование в Python с помощью Logzero. Ротация лог-файла

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

Вы можете использовать параметры maxBytes и backupCount для ротации файла с заранее заданным размером. Когда размер будет превышен, файл закроется, а новый файл для вывода откроется автоматически. Переключение происходит каждый раз, когда длина текущего лог-файла составляет почти maxBytes. Если maxBytes или backupCount равен нулю, переключение не происходит.

🔗 Python tricks