Python Portal
58.5K subscribers
2.05K photos
185 videos
50 files
580 links
Всё самое интересное из мира Python

Связь: @devmangx

РКН: https://clck.ru/3GMMF6
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
Учись программировать, играя

Codédex выпустили новую версию своей платформы

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

То, что они сделали это реально круто 😦

Думаю, самое простое что можно сделать — поддержать их запуск на Product Hunt, оставив голос

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
40👍14👀4
Please open Telegram to view this post
VIEW IN TELEGRAM
😁499🤣6
Я давно знал про dict.fromkeys в Python

Но только сегодня узнал, что можно задать значение по умолчанию для всех ключей

Я думал, что всегда нужно инициализировать словарь так, чтобы все ключи указывали на None 🌟

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
45👍17🔥10
Media is too big
VIEW IN TELEGRAM
Эта библиотека реально взлетит, и вот почему

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

Она open-source, и чтобы её запустить, достаточно пары строк кода.

Смотри видео с примером

GitHub: emcie-co/parlant

Каждая компания, либо уже делает, либо использует чат-бота. Эта библиотека может заменить тонны кода и при этом дать куда более качественный результат. 🌼

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
24🔥4👍2🤣1
image_2025-08-17_09-32-25.png
983.2 KB
Шпаргалка для собеседования по Python

1. Swap переменных без временной

a, b = 5, 10
a, b = b, a


2. Однострочный if-else (тернарный)

result = "Even" if x % 2 == 0 else "Odd"


3. List Comprehension

squares = [x**2 for x in range(10)]
evens = [x for x in range(10) if x % 2 == 0]


4. Set и Dict Comprehension

unique = {x for x in [1,2,2,3]}        # удалить дубликаты
squares = {x: x**2 for x in range(5)} # dict comprehension


5. Наиболее частый элемент в списке

from collections import Counter
most_common = Counter(['a','b','a','c']).most_common(1)[0][0]


6. Объединение словарей (Python 3.9+)

a = {'x': 1}
b = {'y': 2}
merged = a | b


7. Возврат нескольких значений

def stats(x):
return max(x), min(x), sum(x)

high, low, total = stats([1, 2, 3])


8. Использование zip для итерации по двум спискам

names = ['a', 'b']
scores = [90, 85]

for n, s in zip(names, scores):
print(f"{n}: {s}")


9. «Выпрямление» вложенных списков

nested = [[1,2], [3,4]]
flat = [item for sublist in nested for item in sublist]


10. Значения по умолчанию в словаре

from collections import defaultdict
d = defaultdict(int)
d['apple'] += 1 # без KeyError


11. Лямбда в одну строку

square = lambda x: x**2
print(square(4))


12. enumerate с индексом

for i, v in enumerate(['a', 'b', 'c']):
print(i, v)


13. Сортировка по ключу или значению

d = {'a': 3, 'b': 1, 'c': 2}
sorted_by_val = sorted(d.items(), key=lambda x: x[1])


14. Чтение строк файла в список

with open('file.txt') as f:
lines = f.read().splitlines()


15. Type Hints

def add(x: int, y: int) -> int:
return x + y



👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5020🔥11😁1
База

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
😁101🤣28👍6👀31🔥1🤔1
Нашел на Хабре годную статью 👧

Там показано, как собрать своего оффлайн голосового AI-ассистента всего за вечер

Микрофон слушает тебя, Whisper переводит речь в текст, локальная LLM отвечает, а gTTS всё это озвучивает

Полностью кастомный и без интернета

Код и гайд тут — Habr
Репо: тут

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4013🔥4
Автоформатирование текста с помощью textwrap

В Python есть модуль textwrap, который упрощает работу с длинными строками. Он автоматически разбивает текст на заданную ширину, чтобы он выглядел аккуратно и легко читался, будь то вывод в консоли, логи или отчёты.

Пример кода:

import textwrap

text = "Python — универсальный язык, который подходит для веба, анализа данных, автоматизации и многого другого."
result = textwrap.fill(text, width=40)

print(result)


Вывод:

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


Когда пригодится?

- автоматический перенос строк
- форматирование текста в CLI-программах
- подготовка читаемых логов, email или документации

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥29👍116
PyTorch против TensorFlow — новое исследование расставило точки над i

PyTorch → примерно на 25% быстрее в обучении и на ~78% быстрее в инференсе. Проще для ресёрча

TensorFlow → сильнее в продакшене (мобилки, браузер, сервера)

Полный обзор читай тут

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
35👍6🤝1
Аргумент

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥80😁50🤝52🌚2💊2
photo_2025-08-19_07-28-17.jpg
186.3 KB
Шпаргалка по регулярным выражениям

В ней собрано, как работают якори, классы символов, кванторы, диапазоны, утверждения, спецсимволы, модификаторы и подстановки, плюс примеры готовых шаблонов вроде поиска дат, e-mail или HTML-тегов.

Пригодится 👍

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2410🏆5
Строй полноценные full-stack веб-приложения, используя только Python

Пиши полностью готовые приложения с фронтендом и бэкендом на Python без необходимости учить JavaScript или вести отдельные кодовые базы.

reflex это фреймворк на Python, который позволяет делать фронт и бэк одним языком. ты пишешь UI, логику, состояние, всё в Python, а Reflex сам компилит интерфейс на React/Next.js и запускает backend на FastAPI с WebSocket’ами для реактивности

Полностью опенсорс 😋

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
26👍12🤔6😁4🤝1
Лучший дисклеймер

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
😁96🤣397
FastAPI теперь официально самый популярный веб-фреймворк среди Python-разработчиков 🎉

А вот ещё несколько интересных фактов из свежего опроса State of Python 2025 от JetBrains:

> 51% используют Python для работы с данными
> 46% применяют его для веб-разработки
> Половина сообщества — новички
> 83% всё ещё сидят на старых версиях Python

Подробный разбор: https://jb.gg/python-25

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4019🔥6🤔1
Совет по Python:

Вы можете заставить аргументы быть только позиционными, используя символ / в сигнатуре функции.

def add(x, y, /):
return x + y

add(1, 2)
add(x=1, y=2) # TypeError: add() got some positional-only arguments passed as keyword arguments: 'x, y'


👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
25👍11🌭4🤔2
Шпаргалка по очистке данных в Python Pandas

1. Обзор данных

import pandas as pd
df = pd.read_csv('data.csv') # Загрузить CSV
df.head(5) # Первые 5 строк
df.info() # Типы данных и количество null
df.describe() # Сводная статистика


2. Работа с пропусками и дубликатами

df.isnull().sum()              # Посчитать пропуски
df.dropna() # Удалить строки с null
df.fillna(0) # Заполнить пропуски нулями
df.duplicated().sum() # Посчитать дубликаты
df.drop_duplicates() # Удалить дубликаты


3. Переименование и приведение типов

df.rename(columns={'old': 'new'})   # Переименовать колонку
df.astype({'col': 'int'}) # Сменить тип данных
df.columns.str.strip() # Убрать пробелы


4. Фильтрация и выборка

df.loc[df['col'] > 100]             # Фильтр по условию
df.iloc[0:5] # Выбор по индексу строк
df['col'].isin(['A', 'B']) # Фильтр по значениям


5. Сортировка и группировка

df.sort_values('col')               # Сортировка по возрастанию
df.groupby('group')['val'].mean() # Группировка и агрегация
df['col'].value_counts() # Подсчёт уникальных значений


6. Операции с колонками

df['new'] = df['col1'] + df['col2']               # Новая колонка
df['col'] = df['col'].apply(lambda x: x*2) # Применить функцию
df.drop('col', axis=1) # Удалить колонку


7. Сохранение очищенных данных

df.to_csv('cleaned.csv', index=False)  # Экспорт в CSV


👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
30👍11🏆5👀1
Подождут 🙄

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
34😁17🌭5🔥3😢2🤯1
PyAutoGUI

Крайне любопытная библиотека языка Python, позволяющая превратить твой ПК в автоматизированную систему

За пару строчек кода можно заставить скрипт сделать скриншот, заставить мышку навести на нужную точку на экране, взаимодействовать с различными параметрами окон, написать слово или целый абзац или даже загуглить за тебя 🚬

Вот так можно создать простейший кликер:

import pyautogui
import time
 
def click():
    time.sleep(0.1)    
    pyautogui.click()
 
def main():
    for i in range(20):
        click()
 
main()


Документация тут: https://pyautogui.readthedocs.io/en/latest/

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5519🔥4😁4
Ещё играть не начал, а уже пройти не может

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
1😁99🤣41👀6🤯3🏆1
Нужно потестить HTTPS локально в Python?

Вот простое решение в 3 шага — удобно для проверки SSL/TLS, интеграций с API или любых приложений, которым нужен HTTPS в dev-среде.

Только для локальной разработки, браузер будет ругаться на самоподписанный сертификат. 😋

Для NodeJS есть альтернатива: web.dev

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍174
Помни, что итераторы в Python (и не только) рассчитаны на одно использование.

Когда ты прошёл по всем элементам, назад «перемотать» их нельзя.

Это поведение называется исчерпание итератора

umbers = [1, 2, 3]
reversed_numbers = reversed(numbers)

print(list(reversed_numbers)) # [3, 2, 1]
print(list(reversed_numbers)) # [] — итератор уже пуст


После одного прохода итератор «заканчивается» и повторно использовать его нельзя.

Чтобы пройтись снова, нужно создать новый итератор:

reversed_numbers = reversed(numbers)
print(list(reversed_numbers)) # [3, 2, 1] снова работает


👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍348