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

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

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

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

Метод upper() преобразует все символы нижнего регистра в строке в символы верхнего регистра. Если символы нижнего регистра отсутствуют, возвращается исходная строка. Если ты хочешь преобразовать строку в нижний регистр, используй lower(). Также ты можешь использовать swapcase() для переключения между строчными и прописными буквами.

🔗 Python tricks
ImportError

Те из нас, кто привык работать в ноутбуках на базе Google Colaboratory / Jupyter Notebook, помнят, что в среду предустановлено множество популярных сторонних инструментов, и дополнительно их устанавливать командой pip не нужно.

При работе с классической Python-программой легко забыть, что тот или иной инструмент не подключен. Или, что еще хуже, для данной версии Python не предусмотрена конкретная версия библиотеки. Недавно при запуске скрипта с langchain на Python 3.9. я была вынуждена обновлять языковой пакет до 3.11.5, ибо нужная langchain==0.0.194 в 3.9 попросту недоступна.

Для таких ситуаций try — except малополезен. С подключаемыми инструментами все равно придется разбираться вручную.

🔗 Python tricks
Необычные приёмы нарезки списков на Python

Получение части элементов из списка является распространённым требованием. В Python оператор slice состоит из трёх компонентов.

“start”: начальный индекс (значение по умолчанию равно 0).
“end”: конечный индекс (значение по умолчанию - длина списка).
“step”: определяет размер шага при итерациях по списку (значение по умолчанию равно 1).

🔗 Python tricks
Переводчик

С помощью библиотеки googletrans ты можешь реализовать переводчик. В данном коде реализован простой переводчик с английского на русский и наоборот. Предварительно тебе нужно установить библиотеку.

from googletrans import Translator

def translate_text(text):
translator = Translator()

if text.isascii():
translation = translator.translate(text, src='en', dest='ru')
return translation.text
else:
translation = translator.translate(text, src='ru', dest='en')
return translation.text

# Пример использования
text = input("Введите текст для перевода: ")
translated_text = translate_text(text)
print(f"Переведенный текст: {translated_text}")

🔗 Python tricks
Используйте виртуальное окружение

Виртуальное окружение (virtual environment) — надстройка, которая обеспечивает две вещи.

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

Контроль версий. Виртуальное окружение позволит зафиксировать разновидность используемых библиотек с помощью requirements.txt или другого файла конфигурации. Код, скопированный из многолетнего треда на StackOverflow, часто выдает ошибку именно из-за этого. Если вы работаете с несколькими проектами, требующими разных версий одной и той же библиотеки, virtualenv поможет их «развести по углам».

🔗 Python tricks
Управляйте сессиями

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

🔗 Python tricks
Создание QR-кода

Данный код позволяет создать QR-код из указанной URL-ссылки.

import qrcode

# URL-ссылка, которую вы хотите закодировать в QR-код
url = "https://www.example.com"

# Создание объекта QRCode
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_L,
box_size=10,
border=4,
)

# Добавление данных (URL) в QRCode
qr.add_data(url)
qr.make(fit=True)

# Создание изображения QR-кода
img = qr.make_image(fill_color="black", back_color="white")

# Сохранение изображения QR-кода
img.save("qrcode.png")

Предварительно вам нужно установить библиотеку qrcode.

🔗 Python tricks
Валидируйте входные данные

Стоит фильтровать пользовательский ввод на наличие определенных символов. В разработке веб-приложений это особенно важно, потому что помогает предотвратить различные атаки, такие как SQL-инъекции и межсайтовый скриптинг (XSS).

🔗 Python tricks
Генераторы для экономии памяти

Отрабатывают эффективнее вместо самописных итераторов и вызываются с помощью специального синтаксиса — круглых скобок и конструкции i for i in range(10000).

🔗 Python tricks
%%html

Отрендерит ячейку как код HTML. Таким же образом исполнит код на Javascript, Perl или Ruby! Вот это действительно удивительное дополнение. Только используйте с осторожностью!
Более того, для учебы нередко пригождается верстка формул на специальном стандарте LaTeX, или справочной информации на Markdown. Для самых креативных предусмотрели даже рендеринг из .svg.

🔗 Python tricks
%rerun

Перезапускает предыдущую ячейку. В моей практике это полезно, чтобы пересобрать, к примеру, эмоциональную окраску (позитивная / негативная) реплики пользователя на базе библиотеки dostoevsky.

🔗 Python tricks
dict.get()

dict.get() — это метод словаря, который используется для получения значения по заданному ключу. Однако, в отличие от обращения к элементу словаря с использованием квадратных скобок (dict[key]), метод get() предоставляет дополнительную возможность задать значение по умолчанию, которое будет возвращено, если ключ не найден в словаре.

Синтаксис метода get() выглядит так:

value = dict.get(key, default)

key: Ключ, по которому производится поиск в словаре.
default (необязательный): Значение, которое будет возвращено, если ключ не найден в словаре. Если default не указан, и ключ не найден, метод вернет None.

🔗 Python tricks
Оператор raise

Оператор raise используется для возбуждения исключения (exception). Он позволяет программистам явным образом указывать, что в программе произошла какая-то ошибка или неожиданное условие, и вызывать соответствующее исключение.

Синтаксис оператора raise выглядит следующим образом:

raise [Exception [, args [, traceback]]]


Где Exception — это тип исключения, которое вы хотите возбудить, а args и traceback — дополнительные аргументы, связанные с исключением.

Можно также использовать оператор raise без аргументов, чтобы повторно возбудить текущее исключение внутри блока except. Это может быть полезно, если вы хотите добавить дополнительную информацию к исключению или изменить его тип.

🔗 Python tricks
SymPy

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

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

🔗 Python tricks
Оператор pass

В Python оператор pass представляет собой пустой оператор, который не выполняет никаких действий. Он часто используется там, где синтаксически требуется presense of code (т.е. наличие кода), но непосредственное выполнение каких-либо действий не требуется.

В примере на картинке pass используется в блоке if, чтобы указать, что в случае, если условие True, необходимо просто перейти к следующему блоку кода.

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

🔗 Python tricks
Менеджер паролей

Данный код позволяет реализовать простой менеджер паролей. Ты можешь генерировать новые пароли, сохранять их вместе с именем пользователя и веб-сайтом, выводить все сохраненные пароли.

🔗 Python tricks
%precision

Указывает число знаков после запятой (decimal number) для числовых объектов.

🔗 Python tricks
%pip

Множество сторонних библиотек подключается к проекту именно этой командой. 

Помимо установки модуля по названию вы можете устанавливать некоторые инструменты с помощью ссылки на репозиторий. 

🔗 Python tricks
%debug

Активируeт интерактивный отладчик. 

Эта команда поддерживает два способа активации: перед выполнением кода (точка останова) и post-mortem (“посмертно”). Второй режим вы можете активировать, запустив %debug без каких-либо аргументов. Если только что произошло исключение, это позволит в интерактивном режиме проверить путь ошибки.

🔗 Python tricks
%autoawait

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

🔗 Python tricks