Python на примерах
1.39K subscribers
411 photos
6 videos
145 links
Короткие уроки Python на примерах
Download Telegram
Давайте разберёмся с расширенной итерационной распаковкой. Звучит сложно, но на деле просто.

Когда в Python вы используете распаковку, то переменные без * просто получают соответствующие элементы. Но вот если применить *, то такой переменной достанется не один элемент, а целый список, который будет включать все оставшиеся элементы, не попавшие в переменные без *.

Простой пример:

a, *b, c = [1, 2, 3, 4, 5]


Здесь a получит 1, b — список [2, 3, 4], а c — 5.

Очень удобный способ работы с коллекциями, когда нужно «выдернуть» несколько элементов из середины или конца.
👍8🔥4❤‍🔥2
Модуль inspect в Python — это настоящий инструмент для тех, кто хочет заглянуть за кулисы Python и понять, что происходит "по ту сторону кода". Он позволяет исследовать функции, классы и даже модули в вашем проекте.

Один из интересных методов — inspect.getsource(), который позволяет получить исходный код функции или класса. Пример:

import inspect

def example_func():
pass

print(inspect.getsource(example_func))


Это выведет исходный код функции example_func.

Также полезен метод inspect.getmodule(), который позволяет узнать, в каком модуле была определена та или иная сущность. Например:

import inspect
import math

print(inspect.getmodule(math.sqrt))


Этот код покажет, что sqrt определен в модуле math.

Модуль inspect — отличный помощник для тех, кто хочет понять, как работают библиотеки и глубже понять поведение кода в Python.
👍6❤1
Подчеркивание в числовых литералах — это полезная фишка Python 3, которая упрощает восприятие чисел. Оно помогает разделять большие числа на группы, например, для удобства чтения тысяч, миллионов или даже чисел в других системах счисления.

Пример:

num = 1_000_000  # миллион
hex_num = 0xFF_FF_FF # шестнадцатеричное число
bin_num = 0b1010_1011 # двоичное число


Это ничем не влияет на значение числа, но значительно улучшает его читаемость. Теперь большие числа выглядят гораздо проще для восприятия
🔥8👍4👀1
Правила написания регулярных выражений (regex) в коде:

1. Использование re.compile. Для сложных и длинных регулярных выражений всегда лучше использовать re.compile (или его аналоги в других языках). Это повышает читаемость и производительность кода.

2. Избегание повторных вызовов re.compile. Если вы часто используете одно и то же регулярное выражение, лучше не вызывать re.compile каждый раз. Вместо этого можно сохранить скомпилированное регулярное выражение и использовать его повторно.

3. Использование re.VERBOSE для подробных выражений. При написании сложных регулярных выражений, используйте флаг re.VERBOSE. Это позволит разделить выражение на несколько строк и добавлять комментарии, что значительно улучшает читаемость и поддержку кода.

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

RealtimeSTT — это библиотека для преобразования речи в текст в реальном времени. Она отличается низкой задержкой и удобна для интеграции в различные приложения, например, в голосовые помощники.

Библиотека предоставляет базовые функции записи и одновременной обработки транскрипций, а также поддерживает настройку параметров и использование колбэков для управления активацией. Это отличный инструмент для создания высококачественных голосовых приложений с минимальной задержкой.
https://github.com/KoljaB/RealtimeSTT
👍2
Media is too big
VIEW IN TELEGRAM
G-Scraper — это Python-инструмент для веб-скрапинга с графическим интерфейсом, ориентированный на пользователей, которым нужно удобно собирать данные с различных сайтов.

Программа использует PyQT5 для создания графического интерфейса, а для самого скрапинга полагается на библиотеки Requests и BeautifulSoup4.

С помощью G-Scraper можно извлекать несколько элементов с различных URL, работать как с GET, так и с POST-запросами, а также автоматизировать процессы входа и регистрации на сайтах. Программа также ведет логи и сохраняет полученные данные в указанной папке.

Однако стоит учитывать, что инструмент не подходит для работы с динамичными сайтами, например, такими как YouTube, которые активно используют JavaScript для загрузки контента.
👍2🤔1
Начинаем неделю с разминки.

Что выведет данный код?
🤔2
Разбираемся с функцией sort_key для кастомной сортировки в Python

Когда речь заходит о сортировке данных в Python, часто хочется иметь больше контроля над тем, как именно будет происходить упорядочивание. В таких случаях на помощь приходит функция sort_key. С её помощью можно создать свою уникальную логику сортировки, задавая ключевые параметры.

Давайте разберемся, как это работает!

Что делает функция `sort_key`?

Функция sort_key используется в методе .sort() или функции sorted(). Она принимает каждый элемент из коллекции и возвращает кортеж или список значений, по которым Python будет сортировать элементы.

def sort_key(x):
return len(str(x)), x


Здесь sort_key(x) возвращает кортеж из двух элементов:
1. len(str(x)) — длина строкового представления числа. Это помогает Python сначала сортировать числа по количеству цифр.
2. x — само число, которое используется как второй критерий сортировки, если длина чисел одинаковая.

Как работает сортировка?

Допустим, у нас есть список чисел:

nums = [1, 2, 10, 3, 20]


Теперь, применяя сортировку с помощью функции sort_key, мы получаем следующую картину:

1. Число 1 → строка "1" → длина = 1
2. Число 2 → строка "2" → длина = 1
3. Число 10 → строка "10" → длина = 2
4. Число 3 → строка "3" → длина = 1
5. Число 20 → строка "20" → длина = 2

Сортировка происходит сначала по длине строк (по числу цифр), а затем — по самим числам в случае одинаковой длины строк.

Результат сортировки будет таким:

[1, 2, 3, 10, 20]


Зачем это нужно?

Это может быть полезно в различных случаях:

- Сортировка чисел по количеству цифр: например, если вам нужно отсортировать элементы в порядке возрастания их «размера» или «длины».
- Обработка строковых данных: вы можете использовать sort_key для сортировки строк по длине или по определённым признакам.
- Работа с датами и временем: если вы работаете с датами или временем, то можете сортировать не только по дате, но и по времени суток, например.

Как использовать `sort_key` на практике?

Вот ещё один пример:

def sort_key(x):
return len(x), x

words = ["apple", "banana", "kiwi", "cherry"]
words.sort(key=sort_key)
print(words)


Этот код отсортирует слова по длине, а затем по алфавиту в случае одинаковой длины.

Результат:
['kiwi', 'apple', 'banana', 'cherry']


Преимущества `sort_key`:
1. Гибкость: Вы можете определить любой способ сортировки, комбинируя несколько критериев.
2. Чистота кода: Вместо того чтобы вручную изменять список или работать с дополнительными данными, вы просто передаете ключ сортировки.
3. Удобство: Когда вам нужно несколько уровней сортировки, sort_key позволяет легко их реализовать.

Важные моменты:
- sort_key должна возвращать кортеж или список, где каждый элемент — это критерий сортировки.
- Если вы сортируете по нескольким признакам, то Python будет поочередно проверять каждый элемент в кортеже (или списке), пока не найдёт различие.

💡 С помощью sort_key можно не просто сортировать данные, но и реализовывать сложные логики сортировки, делая ваш код гибким и мощным
👍6❤5
Модуль Math в Python

Модуль Math — это незаменимый инструмент для работы с математическими функциями, от синуса и косинуса до логарифмов. Он позволяет легко выполнять сложные вычисления без необходимости подключать дополнительные библиотеки. В примере показан метод log(), который часто используется при решении различных задач.

Для разработчиков, работающих с Python, Math — это просто must-have для повседневных вычислений.
👍7❤‍🔥1
Модуль Statistics в Python

Модуль Statistics предоставляет основные инструменты для статистического анализа данных. Хотя он не такой мощный, как SCiPy, его возможностей вполне хватает для большинства задач анализа. Альяс модуля — st, а иногда также можно встретить stc или sts. Важно не путать его с scs, так как это alias для Scipy.stats.

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

zlib — это эффективное решение для сжатия и распаковки данных в Python. Он идеально подходит для работы с большими объемами информации, например, при передаче пакетов. Основные функции, которые стоит знать — compress() и decompress(), которые позволяют быстро и эффективно сжимать и восстанавливать данные.

Если нужно уменьшить размер данных, zlib всегда под рукой.
👍6
Четыре типа кавычек в Питон

В Python можно использовать как одинарные, так и двойные кавычки для строк. Главное — строка должна начинаться и заканчиваться одним и тем же типом кавычек. Но есть еще два интересных типа: тройные одинарные кавычки (''') и тройные двойные кавычки ("""). Это даёт гибкость при работе с вложенными кавычками, позволяя избежать экранирования.

Теперь можно спокойно работать с кавычками разных типов, не беспокоясь о путанице
👍5🥰2❤1
Функция reduce

Функция reduce похожа на map, но с одним важным отличием — она возвращает одно итоговое значение, полученное в результате последовательных применений функции. В отличие от map, где результатом является итерация, reduce сводит все элементы к единому результату. Не забудьте импортировать её из модуля functools перед использованием.

Это мощный инструмент для выполнения операций свертки данных в одну переменную
👍4
Функции any и all

Функции any и all — это удобные инструменты, заменяющие операторы OR и AND, и они значительно упрощают код, особенно когда нужно проверить несколько условий.

Обе функции принимают список булевых значений и возвращают одно булево значение:
- any работает как оператор OR: если хотя бы одно значение в списке True, результат будет True.
- all действует как оператор AND: если хотя бы одно значение False, результат будет False.

Эти функции делают код более компактным и читаемым, когда работаете с множеством условий
👍10
Срезы для строк в Python

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

Кроме того, срезы можно задавать не только числами, но и переменными, что дает еще больше гибкости.
👍3
Выбор случайного элемента из последовательности

Модуль random из стандартной библиотеки Python предоставляет множество полезных функций для работы с случайными данными. Одной из самых часто используемых является функция random.choice(seq), которая позволяет выбрать случайный элемент из индексируемой последовательности, будь то список, кортеж или строка.

Это простое и удобное решение, если нужно случайным образом выбрать элемент из коллекции
👍3
Просмотр атрибутов и методов класса в интерпретаторе Python

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

Это идеальный инструмент для быстрого анализа классов и объектов в Python
20+ производительных LLM, написанных с нуля, с подробным описанием, инструкциями, файнтюнигу и деплою.

Особенности:
🟢 Модели написаны с нуля
🟢 Нет абстракций
🟢 Подходит для обучения новичков
🟢 Flash attention
🟢 FSDP
🟢 LoRA, QLoRA, Adapter
🟢 Уменьшение памяти GPU (fp4/8/16/32)
🟢 1-1000+ GPU/TPUs
🟢 20+ LLMs

Установка:


pip install 'litgpt[all]'

Пример:

from litgpt import LLM

llm = LLM.load("microsoft/phi-2")
text = llm.generate("Fix the spelling: Every fall, the familly goes to the mountains.")
print(text)
# Corrected Sentence: Every fall, the family goes to the mountains.


▪️Github
▪️Docs
▪️Video
👍3
Распечатывание ежемесячного календаря

В Python есть скрытая функция, которая позволяет легко распечатать календарь на месяц в виде таблицы. Для этого достаточно использовать модуль calendar. Это простой и удобный способ быстро вывести нужный месяц в читаемом формате.

Идеальный лайфхак, когда нужно быстро получить календарь без лишних усилий
💯6🔥3
Автоматическое создание ASCII-арт из картинки

Зачем тратить время на создание изображений вручную, если можно просто преобразовать их в ASCII-арт с помощью Python? В этом поможет библиотека Pillow, которая предназначена для обработки изображений, и немного магии с символами.

Пример:

from PIL import Image

def image_to_ascii(image_path, width=100):
image = Image.open(image_path)
aspect_ratio = image.height / float(image.width)
new_height = int(aspect_ratio * width)
image = image.resize((width, new_height))
image = image.convert('L') # Конвертируем в оттенки серого

pixels = image.getdata()
ascii_chars = ["@", "#", "S", "%", "?", "*", "+", ";", ":", ",", "."]
ascii_str = ''.join([ascii_chars[pixel // 25] for pixel in pixels])

return '\n'.join([ascii_str[index:index + width] for index in range(0, len(ascii_str), width)])

print(image_to_ascii("your_image.jpg"))


Этот код преобразует картинку в текстовую форму, а результат можно вывести прямо в терминал
❤‍🔥3