Тернарный оператор в Python — удобная штука, но им легко злоупотребить:
То, что это можно написать, ещё не значит, что так стоит писать.
Если условий 3 и больше — лучше использовать
А тернарный оператор стоит оставить для:
comprehensions (генераторов списков / коллекций),
👉 @PythonPortal
'A' if s>=90 else 'B' if s>=80 else 'C' if s>=70 else 'F'
То, что это можно написать, ещё не значит, что так стоит писать.
Если условий 3 и больше — лучше использовать
if-elif-else.А тернарный оператор стоит оставить для:
comprehensions (генераторов списков / коллекций),
lambda-выражений, return в одну строку.Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤2👀2
Регулярные выражения в python
Регулярные выражения (regex) в Python используются для поиска, соответствия и манипулирования строками на основе шаблонов. В Python регулярные выражения реализованы в модуле
Основные функции модуля re:
🔸
🔸
🔸
🔸
🔸
🔸
Примеры использования:
Объяснение примера:
>
>
>
>
>
>
Дополнительные примеры шаблонов:
Регулярные выражения мощный инструмент для работы с текстом, и они могут быть полезны в самых разных задачах, от простой проверки ввода до сложного парсинга текста.💊
👉 @PythonPortal
Регулярные выражения (regex) в Python используются для поиска, соответствия и манипулирования строками на основе шаблонов. В Python регулярные выражения реализованы в модуле
reОсновные функции модуля re:
re.match(): Проверяет, соответствует ли начало строки заданному шаблону.re.search(): Ищет шаблон в строке и возвращает первый найденный совпадающий объект.re.findall(): Находит все совпадения шаблона в строке и возвращает их в виде списка.re.finditer(): Находит все совпадения шаблона и возвращает их в виде итератора.re.sub(): Заменяет все совпадения шаблона на заданную строку.re.split(): Разделяет строку по заданному шаблону.Примеры использования:
import re
# Пример строки
text = "The rain in Spain falls mainly in the plain."
# 1. re.match()
match = re.match(r'The', text)
if match:
print("Match found:", match.group())
else:
print("No match found")
# 2. re.search()
search = re.search(r'rain', text)
if search:
print("Search found:", search.group())
else:
print("No search found")
# 3. re.findall()
findall = re.findall(r'in', text)
print("Findall results:", findall)
# 4. re.finditer()
finditer = re.finditer(r'in', text)
for match in finditer:
print("Finditer match:", match.group(), "at position", match.start())
# 5. re.sub()
substitute = re.sub(r'rain', 'snow', text)
print("Substitute result:", substitute)
# 6. re.split()
split = re.split(r'\s', text)
print("Split result:", split)
Объяснение примера:
>
re.match(r'The', text): Проверяет, начинается ли строка text с "The".>
re.search(r'rain', text): Ищет первое вхождение "rain" в строке text.>
re.findall(r'in', text): Находит все вхождения "in" в строке text.>
re.finditer(r'in', text): Возвращает итератор, который перебирает все вхождения "in" в строке text.>
re.sub(r'rain', 'snow', text): Заменяет все вхождения "rain" на "snow" в строке text.>
re.split(r'\s', text): Разделяет строку text по пробелам (символы пробела).Дополнительные примеры шаблонов:
\d: Любая цифра.\D: Любой символ, кроме цифры.\w: Любая буква, цифра или символ подчеркивания.\W: Любой символ, кроме буквы, цифры или символа подчеркивания.\s: Любой пробельный символ.\S: Любой непробельный символ..: Любой символ, кроме новой строки.^: Начало строки.$: Конец строки.*: 0 или более повторений.+: 1 или более повторений.?: 0 или 1 повторение.{n}: Ровно n повторений.{n,}: n или более повторений.{n,m}: От n до m повторений.Регулярные выражения мощный инструмент для работы с текстом, и они могут быть полезны в самых разных задачах, от простой проверки ввода до сложного парсинга текста.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤22👍3
Релиз Pyrefly type checker 1.0.0 уже здесь: https://pyrefly.org/blog/v1.0/
Вот основные улучшения:
🐍 Обновлённая диагностика стала в 2–125 раз быстрее
🐍 Полная проверка типов ускорена на 20–36%
🐍 Первичная индексация при первом сканировании стала в 2–3 раза быстрее
🐍 Использование памяти снижено на 40–60%
🐍 Добавлен отчёт о покрытии type checking
👉 @PythonPortal
Вот основные улучшения:
🐍 Обновлённая диагностика стала в 2–125 раз быстрее
🐍 Полная проверка типов ускорена на 20–36%
🐍 Первичная индексация при первом сканировании стала в 2–3 раза быстрее
🐍 Использование памяти снижено на 40–60%
🐍 Добавлен отчёт о покрытии type checking
Please open Telegram to view this post
VIEW IN TELEGRAM
pyrefly.org
Pyrefly v1.0 is here! | Pyrefly
Pyrefly has reached stable version 1.0 status, read about the new features and how to get started.
😁4❤1
Google выпустила свои официальные skills для AI-агентов.
Компания опубликовала 13 skills, совместимых с Claude Code, Cursor, Copilot и другими агентами.
Они позволяют агентам выполнять продвинутые задачи и автоматизировать сложные рабочие процессы.
Это бесплатно и с открытым исходным кодом : https://github.com/google/skills
👉 @PythonPortal
Компания опубликовала 13 skills, совместимых с Claude Code, Cursor, Copilot и другими агентами.
Они позволяют агентам выполнять продвинутые задачи и автоматизировать сложные рабочие процессы.
Это бесплатно и с открытым исходным кодом : https://github.com/google/skills
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12👍9
Методы в Python хранятся на уровне класса, а не экземпляра.
Тогда как Python находит метод при вызове
Правило ICPO:
Сначала Python ищет атрибут в экземпляре (_i_nstance).
Если не найден — проверяет класс (_c_lass).
Дальше — родительские классы (_p_arent).
В конце —
Именно поэтому метод можно определить один раз в классе, а использовать через любой экземпляр.
👉 @PythonPortal
Тогда как Python находит метод при вызове
x.m()?Правило ICPO:
Сначала Python ищет атрибут в экземпляре (_i_nstance).
Если не найден — проверяет класс (_c_lass).
Дальше — родительские классы (_p_arent).
В конце —
object, корневой базовый класс (_o_bject).Именно поэтому метод можно определить один раз в классе, а использовать через любой экземпляр.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤7
This media is not supported in your browser
VIEW IN TELEGRAM
Преврати любую авторегрессионную языковую модель в диффузионную языковую модель.
dLLM — это Python-библиотека, которая объединяет обучение и оценку диффузионных языковых моделей.
Её также можно использовать, чтобы превратить ЛЮБУЮ авторегрессионную языковую модель в диффузионную языковую модель с минимальными вычислительными затратами.
100% открытый исходный код.
👉 @PythonPortal
dLLM — это Python-библиотека, которая объединяет обучение и оценку диффузионных языковых моделей.
Её также можно использовать, чтобы превратить ЛЮБУЮ авторегрессионную языковую модель в диффузионную языковую модель с минимальными вычислительными затратами.
100% открытый исходный код.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍4
Во многих приложениях требуется отображение строк в целые числа. В Python это обычно выглядит так:
Если ключей 1 миллион, это может потреблять много памяти — больше 100 байт на ключ.
Наш слон опубликовал новую библиотеку, которая использует около 9 байт на ключ. Да, всего 9 байт. Использование выглядит так:
Она может быть значительно быстрее (например, до 2 раз в некоторых случаях), чем стандартный словарь. Также её можно сериализовать и десериализовать на диск или в сеть для удобного повторного использования.
https://pypi.org/project/fastconstmap/
гитхаб: https://github.com/lemire/fastconstmap
👉 @PythonPortal
d = {"apple": 100, "banana": 200, "cherry": 300}Если ключей 1 миллион, это может потреблять много памяти — больше 100 байт на ключ.
Наш слон опубликовал новую библиотеку, которая использует около 9 байт на ключ. Да, всего 9 байт. Использование выглядит так:
from fastconstmap import ConstMap
d = {"apple": 100, "banana": 200, "cherry": 300}
m = ConstMap(d)
m["apple"] # -> 100
m.get_many(["banana", "cherry"]) # -> [200, 300]
Она может быть значительно быстрее (например, до 2 раз в некоторых случаях), чем стандартный словарь. Также её можно сериализовать и десериализовать на диск или в сеть для удобного повторного использования.
https://pypi.org/project/fastconstmap/
гитхаб: https://github.com/lemire/fastconstmap
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤5
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣54❤7👍7
«Open Data Structures» — ещё один очень полезный бесплатный ресурс для всех, кто изучает структуры данных и алгоритмы.
Книга разбирает реализацию и анализ базовых структур: списков на массивах, связных списков, хеш-таблиц, бинарных деревьев, красно-чёрных деревьев, куч, алгоритмов сортировки, графов и структур данных для работы с целыми числами.
Это полноценный открытый учебник для изучения одной из фундаментальных тем компьютерных наук и хороший референс, который стоит держать под рукой.
https://opendatastructures.org/ods-python.pdf
👉 @PythonPortal
Книга разбирает реализацию и анализ базовых структур: списков на массивах, связных списков, хеш-таблиц, бинарных деревьев, красно-чёрных деревьев, куч, алгоритмов сортировки, графов и структур данных для работы с целыми числами.
Это полноценный открытый учебник для изучения одной из фундаментальных тем компьютерных наук и хороший референс, который стоит держать под рукой.
https://opendatastructures.org/ods-python.pdf
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤3
«Introduction to Algorithms» — выдающийся университетский ресурс для всех, кто изучает алгоритмы и компьютерные науки.
Книга охватывает вычислительную сложность, структуры данных, алгоритмы на графах, динамическое программирование, методы «разделяй и властвуй», жадные алгоритмы, рандомизированные алгоритмы и многие математические основы современной компьютерной науки.
Особенно ценно здесь сочетание математической строгости и практического алгоритмического мышления. Это одна из тех книг, которые сильно меняют подход к анализу задач, эффективности и самим вычислениям.
Обязательный инструмент в библиотеке любого разработчика и инженера, работающего в сфере компьютерных наук.
https://www.cs.mcgill.ca/~akroit/math/compsci/Cormen%20Introduction%20to%20Algorithms.pdf
👉 @PythonPortal
Книга охватывает вычислительную сложность, структуры данных, алгоритмы на графах, динамическое программирование, методы «разделяй и властвуй», жадные алгоритмы, рандомизированные алгоритмы и многие математические основы современной компьютерной науки.
Особенно ценно здесь сочетание математической строгости и практического алгоритмического мышления. Это одна из тех книг, которые сильно меняют подход к анализу задач, эффективности и самим вычислениям.
Обязательный инструмент в библиотеке любого разработчика и инженера, работающего в сфере компьютерных наук.
https://www.cs.mcgill.ca/~akroit/math/compsci/Cormen%20Introduction%20to%20Algorithms.pdf
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5🔥5
Наследование в Python меняет путь поиска атрибутов, также известный как «method resolution order» (MRO):
То есть MRO показывает, в каком порядке Python будет искать методы и атрибуты: сначала в классе потомке, затем в родителях по цепочке, и в конце — в базовом
@PythonPortal
class Child:
pass
Child.__mro__ # (__main__.Child, object)
class Child(Parent):
pass
Child.__mro__ # (__main__.Child, __main__.Parent, object)
То есть MRO показывает, в каком порядке Python будет искать методы и атрибуты: сначала в классе потомке, затем в родителях по цепочке, и в конце — в базовом
object.@PythonPortal
👍10
Не тратьте токены вашего AI на исследование проекта
Создайте локальный семантический граф вашего кода с помощью этого инструмента:
✓ –92% вызовов внешних инструментов
✓ Исследование кода на 71% быстрее
✓ Поддержка Claude Code, Cursor, Codex и OpenCode
Локально и с открытым исходным кодом:
→ http://github.com/colbymchenry/codegraph
👉 @PythonPortal
Создайте локальный семантический граф вашего кода с помощью этого инструмента:
✓ –92% вызовов внешних инструментов
✓ Исследование кода на 71% быстрее
✓ Поддержка Claude Code, Cursor, Codex и OpenCode
Локально и с открытым исходным кодом:
→ http://github.com/colbymchenry/codegraph
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤3
Нужно понять, какие аргументы переданы в скрипт на Питоне.
Для этого используется
дальше идут все переданные параметры запуска
👉 @PythonPortal
Для этого используется
sys.argv — список, где:sys.argv[0] — имя самого скриптадальше идут все переданные параметры запуска
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🤔1
Open-source проект Presenton (5K+ звёзд) генерирует презентации из промптов и документов.
Поддерживает:
- промпт → презентация
- документ → презентация
- экспорт PPTX и PDF
- шаблоны
- самохостинг (Докер)
- API
- BYOK
- Ollama
Работает через генерацию + редактирование + экспорт, без привязки к закрытому редактору.
GitHub: github.com/presenton/pres
👉 @PythonPortal
Поддерживает:
- промпт → презентация
- документ → презентация
- экспорт PPTX и PDF
- шаблоны
- самохостинг (Докер)
- API
- BYOK
- Ollama
Работает через генерацию + редактирование + экспорт, без привязки к закрытому редактору.
GitHub: github.com/presenton/pres
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6
«10 миллионов документов помещаются в 4 ГБ ОЗУ»: https://github.com/RyanCodrai/turbovec
Корпус из 10 миллионов документов занимает 31 ГБ ОЗУ в формате float32. turbovec укладывает это в 4 ГБ и выполняет поиск быстрее, чем FAISS.
turbovec — векторный индекс на Rust с Python-обвязками, построенный на алгоритме TurboQuant от Google Research — data-oblivious квантизаторе, который достигает границы Шеннона по искажению без обучения и без проходов по данным.
👉 @PythonPortal
Корпус из 10 миллионов документов занимает 31 ГБ ОЗУ в формате float32. turbovec укладывает это в 4 ГБ и выполняет поиск быстрее, чем FAISS.
turbovec — векторный индекс на Rust с Python-обвязками, построенный на алгоритме TurboQuant от Google Research — data-oblivious квантизаторе, который достигает границы Шеннона по искажению без обучения и без проходов по данным.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18❤6👍4