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

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

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

Ссылка на канал: https://t.me/+QayZf6ccsQllZTYy
Download Telegram
FastAPI

FastAPI — это современный, быстрый (высокопроизводительный) веб-фреймворк для создания API используя Python 3.6+, в основе которого лежит стандартная аннотация типов Python. FastAPI обладает выдающейся производительностью благодаря использованию асинхронности и автоматическому созданию документации для вашего API.

FastAPI предоставляет множество других возможностей, такие как валидация запросов, зависимости (dependencies), работа с базами данных и многое другое, что делает его мощным инструментом для создания веб-приложений на Python.

🔗 Python tricks
Анонимные функции, инструкция lambda

Анонимные функции могут содержать лишь одно выражение, но и выполняются они быстрее. Анонимные функции создаются с помощью инструкции lambda. Кроме этого, их не обязательно присваивать переменной, как делали мы инструкцией def func().

lambda функции, в отличие от обычной, не требуется инструкция return, а в остальном, ведет себя точно так же.

🔗 Python tricks
Зачем нужны кортежи, если есть списки?

На это есть несколько причин. Во первых, это защита от дурака. То есть кортеж защищен от изменений, как намеренных (что плохо), так и случайных (что хорошо).

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

В третьих, это возможность использовать кортежи в качестве ключей словаря.

🔗 Python tricks
Как работать с кортежами?


Почему когда мы создаем кортеж из одного элемента нам выводит строку?

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

Но все же не увлекайтесь, и ставьте скобки, тем более, что бывают случаи, когда скобки необходимы.
Еще можно создать кортеж из итерируемого объекта можно с помощью все той же пресловутой функции tuple()
🔗 Python tricks
list.pop

Метод list pop() удаляет элемент по указанному индексу. Метод также возвращает удаленный элемент. Если индекс, переданный методу, находится за пределами диапазона, он выдает исключение IndexError: pop index out of range.

🔗 Python tricks
Операции с кортежами

Все операции над списками, не изменяющие список (сложение, умножение на число, методы index() и count() и некоторые другие операции). Можно также по-разному менять элементы местами и так далее.

Например, гордость программистов на python - поменять местами значения двух переменных
🔗 Python tricks
Словари (dict) и работа с ними

Словари в Python
- неупорядоченные коллекции произвольных объектов с доступом по ключу. Их иногда ещё называют ассоциативными массивами или хеш-таблицами.

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

🔗 Python tricks
Что такое списки?

Списки в Python - упорядоченные изменяемые коллекции объектов произвольных типов (почти как массив, но типы могут отличаться).
Чтобы использовать списки, их нужно создать. Создать список можно несколькими способами. Например, можно обработать любой итерируемый объект (например, строку) встроенной функцией list.

🔗 Python tricks
Строки. Функции и методы строк

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

Поэтому все строковые методы возвращают новую строку, которую потом следует присвоить переменной
🔗 Python tricks
Генерация QR-кода

QR-коды используются для кодирования и декодирования данных в машиночитаемую форму. Благодаря библиотеке pyqrcode ты можешь без проблем создавать QR-коды. Делимся кодом для генерации QR-кода.

🔗 Python tricks
Строки в апострофах и в кавычках

Строки в апострофах и в кавычках - одно и то же. Причина наличия двух вариантов в том, чтобы позволить вставлять в литералы строк символы кавычек или апострофов, не используя экранирование.
🔗 Python tricks
Строки в апострофах и в кавычках

Строки в апострофах и в кавычках - одно и то же. Причина наличия двух вариантов в том, чтобы позволить вставлять в литералы строк символы кавычек или апострофов, не используя экранирование.
🔗 Python tricks
PySnooper

PySnooper
это библиотека для отладки, которая позволяет логгировать каждую строку выполняемого кода вместе со значениями переменных. Она полезна, когда нужно понять, как работает код и где происходят изменения переменных.

Для использования необходимо декорировать функцию, которую нужно отладить с помощью @pysnooper.snoop(). Вид лога можно настроить с помощью параметров: variables — какие переменные отображать, depth — максимальная вложенность структур данных, prefix — префикс для каждой строки лога.

Результат использования pysnooper предоставлен на изображении.

🔗 Python tricks
Декоратор @frozen

Декоратор @frozen — это не встроенный декоратор, а часто используемый соглашение в библиотеках и коде на Python. Он используется для обозначения, что класс или объект должен быть неизменяемым (immutable). Неизменяемые объекты не могут быть изменены после создания. Это означает, что их атрибуты и состояние остаются постоянными, что может быть полезно во многих сценариях.

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

🔗 Python tricks
Строки в тройных апострофах или кавычках

Главное достоинство строк в тройных кавычках в том, что их можно использовать для записи многострочных блоков текста. Внутри такой строки возможно присутствие кавычек и апострофов, главное, чтобы не было трех кавычек подряд.
🔗 Python tricks
Почему при получаем исключение UnboundLocalError, хотя переменная имеет значение?

Это происходит потому, что, когда вы делаете присваивание переменной в области видимости, она становится локальной в этой области и скрывает другие переменные с таким же именем во внешних областях.

Когда последняя инструкция в foo присваивает новое значение переменной x, компилятор решает, что это локальная переменная. Следовательно, когда более ранний print пытается напечатать неинициализированную переменную, возникает ошибка.
🔗 Python tricks
Какие правила для глобальных и локальных переменных в Python

В Python, переменные, на которые только ссылаются внутри функции, считаются глобальными. Если переменной присваивается новое значение где-либо в теле функции, считается, что она локальная, и, если вам нужно, то нужно явно указывать её глобальной.
🔗 Python tricks
Функция zlib.compress()

Функция zlib.compress() является частью стандартной библиотеки и предназначена для сжатия данных с использованием библиотеки сжатия данных Zlib.

Zlib — это библиотека, которая предоставляет алгоритмы сжатия данных. С её помощью можно уменьшить объем данных, что полезно, например, при передаче данных по сети или сохранении данных на диске, чтобы уменьшить потребление места.

Функция zlib.compress() принимает один аргумент — последовательность байтов (например, строку или байтовый объект) и возвращает сжатую версию этой последовательности.

🔗 Python tricks
Py-spy

Py-spy — это инструмент для профилирования производительности Python-приложений. Он предоставляет информацию о том, как Python-приложение использует центральный процессор (CPU) и может помочь вам выявить узкие места в вашем коде, которые могут приводить к высокому использованию CPU.

Py-spy можно использовать из командной строки, чтобы наблюдать за работой запущенных Python-процессов. Он предоставляет информацию о потреблении CPU, вызовах функций, стеке вызовов и других характеристиках производительности. Вы можете использовать py-spy для оптимизации вашего Python-кода и выявления проблем с производительностью.

🔗 Python tricks
Почему анонимные функции (lambda), определенные в цикле с разными значениями, возвращают один и тот же результат

Это случается, поскольку x не является локальной для lambda, а определена во внешней области видимости, и получается тогда, когда она вызывается - а не когда определяется.

В конце цикла, x=4, поэтому все функции возвращают 4**2, то есть 16. Это можно также проверить, изменив значение x и посмотрев на результат
🔗 Python tricks