Давайте разберёмся с расширенной итерационной распаковкой. Звучит сложно, но на деле просто.
Когда в Python вы используете распаковку, то переменные без
Простой пример:
Здесь
Очень удобный способ работы с коллекциями, когда нужно «выдернуть» несколько элементов из середины или конца.
Когда в 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.Программирование на Python
Модуль inspect в Python: примеры интроспекции и проверки объектов
Описание модуля 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. Для сложных и длинных регулярных выражений всегда лучше использовать
2. Избегание повторных вызовов re.compile. Если вы часто используете одно и то же регулярное выражение, лучше не вызывать
3. Использование re.VERBOSE для подробных выражений. При написании сложных регулярных выражений, используйте флаг
Такой подход помогает сделать регулярные выражения не только функциональными, но и более понятными для других разработчиков.
1. Использование re.compile. Для сложных и длинных регулярных выражений всегда лучше использовать
re.compile (или его аналоги в других языках). Это повышает читаемость и производительность кода.2. Избегание повторных вызовов re.compile. Если вы часто используете одно и то же регулярное выражение, лучше не вызывать
re.compile каждый раз. Вместо этого можно сохранить скомпилированное регулярное выражение и использовать его повторно.3. Использование re.VERBOSE для подробных выражений. При написании сложных регулярных выражений, используйте флаг
re.VERBOSE. Это позволит разделить выражение на несколько строк и добавлять комментарии, что значительно улучшает читаемость и поддержку кода. Такой подход помогает сделать регулярные выражения не только функциональными, но и более понятными для других разработчиков.
🤔1
По выходным, как всегда, готовые полезные приложухи)
RealtimeSTT — это библиотека для преобразования речи в текст в реальном времени. Она отличается низкой задержкой и удобна для интеграции в различные приложения, например, в голосовые помощники.
Библиотека предоставляет базовые функции записи и одновременной обработки транскрипций, а также поддерживает настройку параметров и использование колбэков для управления активацией. Это отличный инструмент для создания высококачественных голосовых приложений с минимальной задержкой.
https://github.com/KoljaB/RealtimeSTT
RealtimeSTT — это библиотека для преобразования речи в текст в реальном времени. Она отличается низкой задержкой и удобна для интеграции в различные приложения, например, в голосовые помощники.
Библиотека предоставляет базовые функции записи и одновременной обработки транскрипций, а также поддерживает настройку параметров и использование колбэков для управления активацией. Это отличный инструмент для создания высококачественных голосовых приложений с минимальной задержкой.
https://github.com/KoljaB/RealtimeSTT
GitHub
GitHub - KoljaB/RealtimeSTT: A robust, efficient, low-latency speech-to-text library with advanced voice activity detection, wake…
A robust, efficient, low-latency speech-to-text library with advanced voice activity detection, wake word activation and instant transcription. - KoljaB/RealtimeSTT
👍2
Media is too big
VIEW IN TELEGRAM
G-Scraper — это Python-инструмент для веб-скрапинга с графическим интерфейсом, ориентированный на пользователей, которым нужно удобно собирать данные с различных сайтов.
Программа использует PyQT5 для создания графического интерфейса, а для самого скрапинга полагается на библиотеки Requests и BeautifulSoup4.
С помощью G-Scraper можно извлекать несколько элементов с различных URL, работать как с GET, так и с POST-запросами, а также автоматизировать процессы входа и регистрации на сайтах. Программа также ведет логи и сохраняет полученные данные в указанной папке.
Однако стоит учитывать, что инструмент не подходит для работы с динамичными сайтами, например, такими как YouTube, которые активно используют JavaScript для загрузки контента.
Программа использует PyQT5 для создания графического интерфейса, а для самого скрапинга полагается на библиотеки Requests и BeautifulSoup4.
С помощью G-Scraper можно извлекать несколько элементов с различных URL, работать как с GET, так и с POST-запросами, а также автоматизировать процессы входа и регистрации на сайтах. Программа также ведет логи и сохраняет полученные данные в указанной папке.
Однако стоит учитывать, что инструмент не подходит для работы с динамичными сайтами, например, такими как YouTube, которые активно используют JavaScript для загрузки контента.
👍2🤔1
Код выше выведет
Anonymous Quiz
66%
[1, 2, 3, 10, 20]
16%
[1, 2, 10, 3, 20]
12%
[10, 20, 1, 2, 3]
5%
[3, 2, 1, 10, 20]
Разбираемся с функцией sort_key для кастомной сортировки в Python
Когда речь заходит о сортировке данных в Python, часто хочется иметь больше контроля над тем, как именно будет происходить упорядочивание. В таких случаях на помощь приходит функция sort_key. С её помощью можно создать свою уникальную логику сортировки, задавая ключевые параметры.
Давайте разберемся, как это работает!
Что делает функция `sort_key`?
Функция sort_key используется в методе
Здесь sort_key(x) возвращает кортеж из двух элементов:
1. len(str(x)) — длина строкового представления числа. Это помогает Python сначала сортировать числа по количеству цифр.
2. x — само число, которое используется как второй критерий сортировки, если длина чисел одинаковая.
Как работает сортировка?
Допустим, у нас есть список чисел:
Теперь, применяя сортировку с помощью функции
1. Число
2. Число
3. Число
4. Число
5. Число
Сортировка происходит сначала по длине строк (по числу цифр), а затем — по самим числам в случае одинаковой длины строк.
Результат сортировки будет таким:
Зачем это нужно?
Это может быть полезно в различных случаях:
- Сортировка чисел по количеству цифр: например, если вам нужно отсортировать элементы в порядке возрастания их «размера» или «длины».
- Обработка строковых данных: вы можете использовать
- Работа с датами и временем: если вы работаете с датами или временем, то можете сортировать не только по дате, но и по времени суток, например.
Как использовать `sort_key` на практике?
Вот ещё один пример:
Этот код отсортирует слова по длине, а затем по алфавиту в случае одинаковой длины.
Результат:
Преимущества `sort_key`:
1. Гибкость: Вы можете определить любой способ сортировки, комбинируя несколько критериев.
2. Чистота кода: Вместо того чтобы вручную изменять список или работать с дополнительными данными, вы просто передаете ключ сортировки.
3. Удобство: Когда вам нужно несколько уровней сортировки,
Важные моменты:
-
- Если вы сортируете по нескольким признакам, то 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" → длина = 12. Число
2 → строка "2" → длина = 13. Число
10 → строка "10" → длина = 24. Число
3 → строка "3" → длина = 15. Число
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 для повседневных вычислений.
Модуль Math — это незаменимый инструмент для работы с математическими функциями, от синуса и косинуса до логарифмов. Он позволяет легко выполнять сложные вычисления без необходимости подключать дополнительные библиотеки. В примере показан метод log(), который часто используется при решении различных задач.
Для разработчиков, работающих с Python, Math — это просто must-have для повседневных вычислений.
👍7❤🔥1
Модуль Statistics в Python
Модуль Statistics предоставляет основные инструменты для статистического анализа данных. Хотя он не такой мощный, как SCiPy, его возможностей вполне хватает для большинства задач анализа. Альяс модуля — st, а иногда также можно встретить stc или sts. Важно не путать его с scs, так как это alias для Scipy.stats.
Этот модуль идеально подходит для быстрой статистики, когда вам не нужны огромные вычислительные ресурсы.
Модуль Statistics предоставляет основные инструменты для статистического анализа данных. Хотя он не такой мощный, как SCiPy, его возможностей вполне хватает для большинства задач анализа. Альяс модуля — st, а иногда также можно встретить stc или sts. Важно не путать его с scs, так как это alias для Scipy.stats.
Этот модуль идеально подходит для быстрой статистики, когда вам не нужны огромные вычислительные ресурсы.
👏3
Модуль zlib
zlib — это эффективное решение для сжатия и распаковки данных в Python. Он идеально подходит для работы с большими объемами информации, например, при передаче пакетов. Основные функции, которые стоит знать — compress() и decompress(), которые позволяют быстро и эффективно сжимать и восстанавливать данные.
Если нужно уменьшить размер данных, zlib всегда под рукой.
zlib — это эффективное решение для сжатия и распаковки данных в Python. Он идеально подходит для работы с большими объемами информации, например, при передаче пакетов. Основные функции, которые стоит знать — compress() и decompress(), которые позволяют быстро и эффективно сжимать и восстанавливать данные.
Если нужно уменьшить размер данных, zlib всегда под рукой.
👍6
Четыре типа кавычек в Питон
В Python можно использовать как одинарные, так и двойные кавычки для строк. Главное — строка должна начинаться и заканчиваться одним и тем же типом кавычек. Но есть еще два интересных типа: тройные одинарные кавычки (''') и тройные двойные кавычки ("""). Это даёт гибкость при работе с вложенными кавычками, позволяя избежать экранирования.
Теперь можно спокойно работать с кавычками разных типов, не беспокоясь о путанице
В Python можно использовать как одинарные, так и двойные кавычки для строк. Главное — строка должна начинаться и заканчиваться одним и тем же типом кавычек. Но есть еще два интересных типа: тройные одинарные кавычки (''') и тройные двойные кавычки ("""). Это даёт гибкость при работе с вложенными кавычками, позволяя избежать экранирования.
Теперь можно спокойно работать с кавычками разных типов, не беспокоясь о путанице
👍5🥰2❤1
Функция reduce
Функция reduce похожа на map, но с одним важным отличием — она возвращает одно итоговое значение, полученное в результате последовательных применений функции. В отличие от map, где результатом является итерация, reduce сводит все элементы к единому результату. Не забудьте импортировать её из модуля functools перед использованием.
Это мощный инструмент для выполнения операций свертки данных в одну переменную
Функция reduce похожа на map, но с одним важным отличием — она возвращает одно итоговое значение, полученное в результате последовательных применений функции. В отличие от map, где результатом является итерация, reduce сводит все элементы к единому результату. Не забудьте импортировать её из модуля functools перед использованием.
Это мощный инструмент для выполнения операций свертки данных в одну переменную
👍4
Функции any и all
Функции any и all — это удобные инструменты, заменяющие операторы OR и AND, и они значительно упрощают код, особенно когда нужно проверить несколько условий.
Обе функции принимают список булевых значений и возвращают одно булево значение:
- any работает как оператор OR: если хотя бы одно значение в списке True, результат будет True.
- all действует как оператор AND: если хотя бы одно значение False, результат будет False.
Эти функции делают код более компактным и читаемым, когда работаете с множеством условий
Функции any и all — это удобные инструменты, заменяющие операторы OR и AND, и они значительно упрощают код, особенно когда нужно проверить несколько условий.
Обе функции принимают список булевых значений и возвращают одно булево значение:
- any работает как оператор OR: если хотя бы одно значение в списке True, результат будет True.
- all действует как оператор AND: если хотя бы одно значение False, результат будет False.
Эти функции делают код более компактным и читаемым, когда работаете с множеством условий
👍10
Срезы для строк в Python
Срезы — это удобный механизм для извлечения подстрок из строки, где можно указать начальный индекс, конечный индекс и, что немаловажно, шаг. Шаг — это третий параметр, который позволяет изменять порядок извлечения. Если шаг отрицательный, срез будет двигаться с конца строки. Это как раз и используется для переворота строки — один из самых популярных способов применения срезов.
Кроме того, срезы можно задавать не только числами, но и переменными, что дает еще больше гибкости.
Срезы — это удобный механизм для извлечения подстрок из строки, где можно указать начальный индекс, конечный индекс и, что немаловажно, шаг. Шаг — это третий параметр, который позволяет изменять порядок извлечения. Если шаг отрицательный, срез будет двигаться с конца строки. Это как раз и используется для переворота строки — один из самых популярных способов применения срезов.
Кроме того, срезы можно задавать не только числами, но и переменными, что дает еще больше гибкости.
👍3
Выбор случайного элемента из последовательности
Модуль random из стандартной библиотеки Python предоставляет множество полезных функций для работы с случайными данными. Одной из самых часто используемых является функция random.choice(seq), которая позволяет выбрать случайный элемент из индексируемой последовательности, будь то список, кортеж или строка.
Это простое и удобное решение, если нужно случайным образом выбрать элемент из коллекции
Модуль random из стандартной библиотеки Python предоставляет множество полезных функций для работы с случайными данными. Одной из самых часто используемых является функция random.choice(seq), которая позволяет выбрать случайный элемент из индексируемой последовательности, будь то список, кортеж или строка.
Это простое и удобное решение, если нужно случайным образом выбрать элемент из коллекции
👍3
Просмотр атрибутов и методов класса в интерпретаторе Python
Функция dir() — это удобный способ получить список атрибутов и методов класса. Особенно полезно, когда нужно разобраться с чужим кодом, а документация отсутствует. Просто передав объект в dir(), вы получаете полный список доступных методов и атрибутов для взаимодействия с этим объектом.
Это идеальный инструмент для быстрого анализа классов и объектов в Python
Функция dir() — это удобный способ получить список атрибутов и методов класса. Особенно полезно, когда нужно разобраться с чужим кодом, а документация отсутствует. Просто передав объект в dir(), вы получаете полный список доступных методов и атрибутов для взаимодействия с этим объектом.
Это идеальный инструмент для быстрого анализа классов и объектов в Python
20+ производительных LLM, написанных с нуля, с подробным описанием, инструкциями, файнтюнигу и деплою.
Особенности:
🟢 Модели написаны с нуля
🟢 Нет абстракций
🟢 Подходит для обучения новичков
🟢 Flash attention
🟢 FSDP
🟢 LoRA, QLoRA, Adapter
🟢 Уменьшение памяти GPU (fp4/8/16/32)
🟢 1-1000+ GPU/TPUs
🟢 20+ LLMs
Установка:
Пример:
▪️Github
▪️Docs
▪️Video
Особенности:
🟢 Модели написаны с нуля
🟢 Нет абстракций
🟢 Подходит для обучения новичков
🟢 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. Это простой и удобный способ быстро вывести нужный месяц в читаемом формате.
Идеальный лайфхак, когда нужно быстро получить календарь без лишних усилий
В Python есть скрытая функция, которая позволяет легко распечатать календарь на месяц в виде таблицы. Для этого достаточно использовать модуль calendar. Это простой и удобный способ быстро вывести нужный месяц в читаемом формате.
Идеальный лайфхак, когда нужно быстро получить календарь без лишних усилий
💯6🔥3
Автоматическое создание ASCII-арт из картинки
Зачем тратить время на создание изображений вручную, если можно просто преобразовать их в ASCII-арт с помощью Python? В этом поможет библиотека
Пример:
Этот код преобразует картинку в текстовую форму, а результат можно вывести прямо в терминал
Зачем тратить время на создание изображений вручную, если можно просто преобразовать их в 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