Python на примерах
1.39K subscribers
411 photos
6 videos
145 links
Короткие уроки Python на примерах
Download Telegram
Работа с изображениями через Pillow 🖌️

Библиотека Pillow предоставляет мощные инструменты для обработки изображений.

🔍 Применение:
Редактирование изображений.
Создание миниатюр.
Добавление фильтров.

from PIL import Image

# Открываем изображение и создаем миниатюру
image = Image.open("example.jpg")
image.thumbnail((100, 100))
image.save("thumbnail.jpg")

print("Thumbnail создан.")


🔑 Результат выполнения:
Создается миниатюра изображения с размерами 100x100 пикселей.
Создание самоуничтожающегося Python-скрипта!

Этот код удаляет себя после выполнения, оставляя систему без следов!

Как это работает?
Скрипт выполняет свои задачи.
Определяет своё местоположение в файловой системе.
Удаляет себя после выполнения.

📌 Где пригодится:

Временная автоматизация

Тестовые скрипты

«Призрачные» утилиты без следов

⚠️ Используй с осторожностью — файл исчезает безвозвратно
❤2👍1
🤖 Телеграм-бот с AI на базе OpenAI

Простой пример бота, отвечающего на сообщения с помощью GPT-3.5:

import openai
from aiogram import Bot, Dispatcher, types
import asyncio

# Твои ключи
BOT_TOKEN = "твой_бот_токен"
OPENAI_API_KEY = "твой_openai_ключ"

openai.api_key = OPENAI_API_KEY
bot = Bot(token=BOT_TOKEN)
dp = Dispatcher(bot)

async def get_ai_response(message):
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": message}]
)
return response["choices"][0]["message"]["content"]

@dp.message_handler()
async def handle_message(msg: types.Message):
reply = await get_ai_response(msg.text)
await msg.answer(reply)

async def main():
await dp.start_polling()

if __name__ == "__main__":
asyncio.run(main())


📌 Что дальше?

* Добавь команды и кнопки
* Подключи GPT-4
* Храни историю диалогов

Минимум кода — максимум возможностей!
👍2🤡1
🙃 Иногда на собеседовании хочется просто исчезнуть.

Чтобы не теряться и не нести ерунду — важно заранее подготовить «продающую» легенду о себе, выстроить стратегию и подготовиться к ключевым вопросам.

💡 Был найден один суперский материал, который позволит:
🔹 Прокачать резюме — с акцентом на результат, а не «просто работу работал»
🔹 Составить чёткий рассказ о себе — кто ты, чем полезен, куда растёшь
🔹 Получить стратегию поиска и переговоров — от безопытного джуна до мидла
🔹 Узнать, как уверенно отвечать на «почему вы хотите у нас работать?» — без мемов 😉

📎 Курс на Stepik: Подготовка к собеседованию в IT: Резюме, Легенда, Стратегия
👉 https://stepik.org/a/243649

Собеседование — не экзамен. Это сделка, на которой должен заработать ты! 🎯

🎁 А для ЭТОГО и ЛЮБЫХ ДРУГИХ курсов на Stepik есть промокоды:
STEPIKSHORTS24 или STEPIKZON10 — активируй при оплате, чтобы сэкономить.
🚀 *Функция для переворота строки*

def reverse_string(s):
return s[::-1]

print(reverse_string("Python")) # nohtyP


Срезы - лучший друг Python-разработчика. Просто и мощно
Обмен переменными между Jupiter-блокнотами

Эта команда позволяет вам хранить любую переменную и использовать ее в различных блокнотах Jupyter.
Чтобы извлечь переменную, вам нужно ввести ту же команду с параметром ‘-r’.
Рисование без рук — управляй курсором глазами!

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

Как это работает?
1. MediaPipe FaceMesh отслеживает положение глаз.
2. Пересчитывает координаты в масштаб экрана.
3. Перемещает курсор в точку, куда смотрите.

Что можно делать?
1. Рисовать в Paint глазами (просто добавьте pyautogui.click()).
2. Играть без рук (управлять мышкой во время игры).
3. Помочь людям с ограниченными возможностями (альтернатива трекпаду).
❤4
Пример кода с использованием glob

Модуль glob находит все пути, совпадающие с заданным шаблоном в соответствии с правилами, используемыми оболочкой Unix. Обрабатываются символы "*" (произвольное количество символов), "?" (один символ), и диапазоны символов с помощью []. Для использования тильды "~" и переменных окружения необходимо использовать os.path.expanduser() и os.path.expandvars().
Ускорение компиляции с помощью numba

Если определённая часть твоего кода всё ещё работает медленно, попробуй библиотеку numba, чтобы компилировать код. numba ускоряет выполнение в 10-20 раз, так как компилирует код в машинные инструкции.
Pandas: Удаление дубликатов

pandas.dropduplicates() — метод в библиотеке pandas, который используется для удаления дубликатов строк из DataFrame. С помощью duplicated ты можешь проверить, имеются ли дубликаты.
Как объединить строки без цикла?

Когда нужно склеить несколько строк из списка в одну, новички часто используют цикл for и оператор +. Но в Python есть более быстрый и лаконичный способ — метод .join().

Метод join() принимает список строк и объединяет их через указанный разделитель. Это работает гораздо эффективнее циклов и особенно полезно при работе с большими объёмами текста.

Итог:
.join() — лучший способ объединения строк.
Работает быстро и читаемо.
Подходит для любых итерируемых объектов со строками.
👍2
Colorama — библиотека, позволяющая работать с цветом вывода в консоль.

С её помощью можно выводить цветной текст, выставлять цвет фона, и даже смешивать эти режимы.

Colorama также может менять текст на жирный и на тусклый. Всё это показано на скрине выше.

Работает на всех операционках.
В том числе адекватно отображается в классической командной строке Windows.
Использовать очень просто.

Ставится командой pip install colorama
Документация и примеры кода здесь
❤1👍1
Как удобно отформатировать строку с переменными?

Новички часто используют конкатенацию (+) для вставки переменных в строки. Это может быть неудобно и плохо читаемо. Вместо этого лучше использовать f-строки — современный и лаконичный способ форматирования строк в Python!

F-строки (или форматированные строки) позволяют вставлять переменные прямо внутрь строки с помощью фигурных скобок {}. Это и быстрее, и чище!

Итог:
-F-строки — самый читаемый и удобный способ форматирования.
-Позволяют вставлять выражения прямо в строку.
-Работают с любой версией Python 3.6+.
❤2
Как замерить время выполнения кода в Python?

Когда нужно понять, насколько быстро работает фрагмент кода, новички часто используют сторонние инструменты или пробуют измерять время "на глаз". Но в Python есть простой и встроенный способ - модуль time.

С помощью time.time() можно зафиксировать время до и после выполнения кода, а затем вычесть одно из другого.

Итог:
- Используем time.time() для измерения скорости.
- Удобно для профилирования и отладки.
- Легко встроить в любой проект.
👍3
Cartopy

Cartopy — это Python-библиотека, предназначенная для создания карт и обработки геопространственных данных. Она построена на базе Matplotlib и обладает широким набором функций для создания профессиональных карт.
👍3
importlib.util.find_spec

importlib.util.find_spec позволяет узнать, можно ли импортировать модуль, не загружая его. Это полезно для проверки наличия зависимостей, динамической загрузки и построения систем плагинов.
Как присвоить несколько переменных в одну строку?

Иногда нужно сразу задать значения нескольким переменным. Новички делают это в несколько строк, что выглядит громоздко. Но Python поддерживает удобную конструкцию множественного присваивания — коротко, читаемо и эффективно!

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

Итог:
Множественное присваивание упрощает код.
Позволяет присваивать значения сразу нескольким переменным.
Удобно для обмена значениями и распаковки структур.
Зачем нужны кортежи, если есть списки?

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

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

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

Функции в Python могут возвращать более одной переменной без применения словаря, списка или класса.

Здесь возвращается кортеж. С тем же эффектом можно было бы написать return (name, birthdate).

Это нормально для ограниченного количества возвращаемых значений. Но все, что превышает 3 значения, должно быть помещено в класс (data).
👍2
Получаем путь к текущему файлу

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

Функция os.path.abspath(__file__) возвращает абсолютный путь к текущему файлу, а os.path.dirname() — директорию, в которой он находится.
👍2
phonenumbers — это небольшая библиотека, для получения информации о номере телефона.

Что она умеет?

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

Сверху приведены два примера по валидации данных, но они возвращают разные значения

Почему так происходит?

Причина в том, что метод is_possible_number() быстро угадывает действительность телефонного номера, проверяя длину анализируемого номера, в то время как метод is_valid_number() выполняет полную проверку, проверяя длину, префикс телефонного номера и регион.

При итерации по большому списку телефонных номеров использование phonenumbers.is_possible_number() даст более быстрые результаты по сравнению с phonenumbers.is_valid_number() . Но, как мы видим здесь, эти результаты не всегда правильны. Так что используйте на свой страх и риск.

Ставится командой ⚙️ pip install phonenumbers
Краткая документация(с pypi) и примеры кода здесь.
👍3