Python

Несколько забавных, и не только, фишек Python

Время прочтения: 3 мин.

Решать однотипные задачи каждый день бывает скучно. Обычно мы развлекаем себя хитроумным кодом или остротами в комментариях кода. Чем ещё? Читаем дальше.

Например, перед нами стоит задача по обработке 10 000 изображений. Нужно сделать уменьшенные превьюшки, скрывающие содержание оригинала размытием, в ином формате.

К слову, это можно сделать через библиотеку pillow, о которой написано уже немало статей:

from PIL import Image
img = Image.open("picture.jpg")
# проверяем текущий размер и расширение
print(f"Формат: {img.format}, размер: {img.size}")
# задаём новые параметры и размытие
new_size = (640, 480)
new_format = "new_picture.png"
img.thumbnail(new_size)
blur = img.filter(ImageFilter.BLUR)
blur.save(new_format)

Ничего сложного. Теперь внесём то самое разнообразие. Как насчёт progressbar?

from tqdm import tqdm
from time import sleep
for i in tqdm (range(1, 1000)):
    sleep(0.01)

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

Итак, процесс пошёл, но вы понимаете, что это займёт какое-то время. Тут зовёт коллега, чтобы помочь ему с другой задачей. Вы можете себе это позволить, но вам нужно будет вернуться к себе, как только отработает ваш код. Как узнать, когда это случится? Поможет звуковой сигнал, и будет лучше если он выделится на фоне любых других системных звуков, доносящихся из компьютеров поблизости. Создадим его непосредственно в коде при помощи winsound, указав частоту и продолжительность сигнала:

import winsound
frequency = 3000
duration = 750
winsound.Beep(frequency, duration)

Хотите, чтобы об окончании вас ждало ещё что-то приятное? Как насчет эмоджи в выводе?

msg = "Код отработал " + "\N{flexed biceps}" + "\N{man dancing}" + "\N{grinning face}"
print(msg)

Если вы ведёте лог, то можно подсчитать, сколько эмоджи вы получили в течение дня. Тут пригодится знание регулярных выражений.

emojies = re.finditer('[\U0001f000-\U0001f650]', msg)
count = sum(1 for _ in emoticons)
print("Счастливых моментов:", count)

Кстати, о регулярных выражениях. Помните коллега просил нас помочь ему? Он как раз не мог справиться с ними. Ему нужно было проверить корректность введённых электронных адресов клиентов, а вы не успели написать код с применением regexp до того, как сработал ваш звуковой сигнал. Коллегу тогда спасла небольшая библиотека validate_email:

from validate_email import validate_email
isValid = validate_email("notvalid@.net") # False
isValid = validate_email("valid_mail@mail.ru") # True

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

Советуем почитать