Последние посты

PytStart | Программирование на Python
21 сент., 13:23
🔄 Генераторы и yield: как делать ленивые вычисления и экономить памятьОбычные функции в Python возвращают всё сразу. Генераторы — по частям. Это «ленивые» вычисления: результат отдаётся только тогда, когда он нужен. Экономия памяти и скорость работы на больших данных становятся колоссальными.⚡️ Простейший пример с yielddef numbers(): yield 1 yield 2 yield 3for n in numbers(): print(n) ➡️ Функция не возвращает список, а отдаёт значения по одному.📂 Чтение больших файлов построчноdef read_file(path): with open(path, "r") as f: for line in f:
PytStart | Программирование на Python
21 сент., 08:03
Python с нуля: автоматизируйте то, на что сейчас уходят часыКурс для тех, кто никогда не программировал, но уже работает с Excel и данными.За короткий курс вы освоите базу Python с нуля и сразу начнёте применять её в рабочих задачах: — объединять Excel-файлы — обрабатывать большие таблицы — строить сводные и графики — работать с датами и текстом — автоматизировать повторяющиеся действияБез лишней теории — только база языка и практические задачи, которые помогают экономить время уже в процессе обучения. За несколько недель выучить язык с нуля 👉@tea4erman_bot


PytStart | Программирование на Python
19 сент., 10:33
🎯 Как выглядеть как мидл, даже если ты джун💡 Мидл — это не про годы опыта, а про то, как ты работаешь с задачами. Даже будучи джуном, ты можешь выглядеть как уверенный разработчик. Вот как.👍 1. Не пиши код сразу — начни с пониманияМидл сначала понимает задачу, уточняет детали, разбивает её на части — и только потом пишет код.# ❌ Джун: # Просто пишет как-нибудь# ✅ Мидл: # Планирует — какие модули затронет, где могут быть ошибки, какие кейсы проверить👍 2. Всегда думай про edge casesМидлы знают, что код без тестов на крайние случаи — потенциальная мина.def divide(a, b): return a / b
PytStart | Программирование на Python
18 сент., 15:02
Написать скрипт - двадцать минут удовольствия. Обложить его тестами и докстрингами, чтобы не стыдно было в репозиторий закинуть - задача на весь остаток рабочего дня.CatCode - агент, который сделает всю рутину за тебя: гоняет линтер, рефакторит, пишет тесты и докстринги пока ты занят логикой, а не бумажной работой вокруг неё. Доступны все топовые модели:😒 Claude Opus 5 🤖 GPT-6 Astra 😐 Grok 4.6 и многие другие.Умный свитчер экономит токены - рутина уйдёт дешёвой модели, сложные задачи - нейросети покруче. Один лимит, который дешевле зоопарка отдельных подписок - всего за 900 рублей в месяц.Оплата картой РФ или СБП, работает без VPN. Первые задачи бесплатно, просто зарегистрируйся и попробуй сам.Оставь рутину агенту, пока листаешь ленту: catcode.dev


PytStart | Программирование на Python
18 сент., 14:18
👩💻 Библиотеки для ленивых: когда хочется больше делать с меньшими усилиямиКаждый программист знает: кодить можно быстрее, если использовать проверенные решения. В Python куча библиотек, которые делают работу за тебя — не нужно изобретать велосипед.1. pathlib — путь к лёгкости работы с путямиТы всё ещё юзаешь os.path? Пора остановиться. pathlib — это объектно-ориентированная альтернатива, которая позволяет работать с путями проще и чище.Пример:from pathlib import Pathp = Path("/home/user/docs") print(p / "file.txt") # /home/user/docs/file.txt👉 Это значительно читаемее и проще, чем старые подходы с os.path.2. requests — HTTP без головной болиHTTP-запросы — одна из самых часто используемых операций, но с ними можно запутаться. requests делает этот процесс понятным и удобным.
PytStart | Программирование на Python
13 сент., 08:47
📐 Typing: TypedDict, Literal, Annotated в реальных проектахАннотации типов в Python — это не только int и str. Для сложных сценариев есть мощные инструменты: TypedDict, Literal, Annotated. Они помогают писать код понятнее и ловить ошибки ещё на этапе разработки.📦 TypedDict — словари со строгой схемой from typing import TypedDictclass User(TypedDict): id: int name: str is_admin: boolu: User = {"id": 1, "name": "Иван", "is_admin": False} ➡️ Теперь IDE и mypy знают структуру словаря. Ошибку в ключе или типе отловишь сразу.🎯 Literal — фиксированные значения from typing import Literaldef set_status(status: Literal["NEW", "IN_PROGRESS", "DONE"]) -> None: print(f"Статус: {status}")
PytStart | Программирование на Python
8 сент., 08:19
🖥 Как превратить список в строку одной командойДопустим, есть список слов:words = ["Python", "это", "просто", "🔥"]Можно быстро объединить их через join():text = " ".join(words)print(text)👉 Получим:Python это просто 🔥А если нужен другой разделитель:csv = ", ".join(words)
PytStart | Программирование на Python
1 сент., 09:25
🖥 Как запустить несколько задач одновременно в PythonЕсли есть несколько задач, которые ждут сеть или другие внешние операции, можно выполнять их конкурентно с asyncio ⚡import asyncioasync def task(name, delay): await asyncio.sleep(delay) print(f"{name} готова")async def main(): await asyncio.gather( task("Задача 1", 2), task("Задача 2", 1), task("Задача 3", 3), )asyncio.run(main())💡 Здесь три задачи запускаются конкурентно.
PytStart | Программирование на Python
31 авг., 09:57
🖥 Как автоматически отправить email с PythonМожно отправлять письма прямо из Python — например, уведомления об ошибках или отчёты 📩import smtplib from email.message import EmailMessagemsg = EmailMessage() msg["Subject"] = "Отчёт" msg["From"] = "you@example.com" msg["To"] = "user@example.com" msg.set_content("Отчёт готов!")with smtplib.SMTP_SSL("smtp.example.com", 465) as smtp: smtp.login("you@example.com", "PASSWORD") smtp.send_message(msg)💡 Что здесь происходит:📨 EmailMessage — создаёт письмо
PytStart | Программирование на Python
30 авг., 09:05
🖥 Как сделать генератор случайных паролей на PythonНебольшой скрипт, который создаёт случайный пароль заданной длины 🔐import secrets import stringchars = string.ascii_letters + string.digits + "!@#$%^&"password = "".join( secrets.choice(chars) for _ in range(16) )print(password)💡 Почему secrets, а не обычный random?secrets предназначен именно для случаев, где важна непредсказуемость случайных значений.
PytStart | Программирование на Python
29 авг., 12:11
🖥 Как найти дубликаты в папке с помощью PythonНапример, в папке лежат сотни файлов, и нужно понять, какие из них полностью одинаковые.Можно сравнивать их по хэшу 👇from pathlib import Path import hashlibdef get_hash(path): return hashlib.md5(path.read_bytes()).hexdigest()files = {}for file in Path("files").iterdir(): if file.is_file(): file_hash = get_hash(file) files.setdefault(file_hash, []).append(file)for group in files.values():
PytStart | Программирование на Python
26 авг., 12:08
🖥 Как превратить PDF в текст с помощью PythonНужно быстро достать текст из PDF? Можно автоматизировать это 👇import fitzdoc = fitz.open("document.pdf")for page in doc: print(page.get_text())📦 Установка:pip install pymupdf💡 А если нужно сохранить весь текст в файл:with open("result.txt", "w", encoding="utf-8") as file: for page in doc: file.write(page.get_text())
PytStart | Программирование на Python
25 авг., 13:09
🖥 Как превратить текст в речь с помощью PythonМожно заставить Python буквально говорить 🔊Для этого есть библиотека pyttsx3:import pyttsx3engine = pyttsx3.init()engine.say("Привет! Я говорю с помощью Python") engine.runAndWait()📦 Установка:pip install pyttsx3💡 Можно сделать функцию:def speak(text):
PytStart | Программирование на Python
25 авг., 08:32
🖥 Как повторить строку несколько разВ Python для этого не нужен цикл 👇text = "Python! "print(text 3)👉 Результат:Python! Python! Python!💡 То же самое работает со списками:nums = [1, 2]print(nums 3)Получим:
PytStart | Программирование на Python
24 авг., 15:16
👩💻 Как работает collections.Counter?Counter — это удобный инструмент для подсчета элементов в коллекции. Не обязательно писать цикл и вручную считать каждый элемент 👇➡️ Пример:from collections import Counterdata = "aabbbcccc" counter = Counter(data) print(counter) # Counter({'c': 4, 'b': 3, 'a': 2})✔️ Можно использовать для нахождения самых частых элементов:print(counter.most_common(2)) # [('c', 4), ('b', 3)]⚙️ Также работает со списками:words = ["apple", "banana", "apple", "orange", "banana", "banana"]
PytStart | Программирование на Python
19 авг., 16:27
👩💻 args и kwargs: гибкие параметры без болиИногда ты не знаешь заранее, сколько аргументов получит твоя функция. Python даёт тебе две магические конструкции для таких случаев — args и kwargs.📌args собирает все позиционные аргументы в кортеж:def add_all(args): return sum(args)add_all(1, 2, 3) # ➡️ 6📌 kwargs собирает все именованные аргументы в словарь:def print_config(kwargs): for k, v in kwargs.items(): print(f"{k} = {v}")print_config(debug=True, timeout=10) # ➡️ debug = True # ➡️ timeout = 10
PytStart | Программирование на Python
17 авг., 13:58
🖥 Как отсортировать список словарей по определенному полю?Метод списка .sort() и встроенная функция sorted() принимают параметр key. Им должен быть вызываемый объект, который принимает очередной элемент (в нашем случае словарь) и возвращает значение-критерий сортировки.Код ниже показывает, как отсортировать список людей по возрасту:users = [{'age': 30}, {'age': 20}, {'age': 10}] users.sort(key=lambda user: user['age']) >>> [{'age': 10}, {'age': 20}, {'age': 30}]
PytStart | Программирование на Python
10 авг., 11:05
👩💻 Антипаттерны в Python-коде, которые встречаются даже у опытныхДаже опытные разработчики пишут код, который потом сложно читать, отлаживать и сопровождать. Вот 5 антипаттернов, которые встречаются особенно часто — и что с ними делать.1. Мутируемые значения по умолчанию def append_item(item, items=[]): items.append(item) return itemsОшибка — items сохраняет состояние между вызовами. Итог — неожиданные данные.✅ Правильно: def append_item(item, items=None): if items is None: items = [] items.append(item) return items2. Импорт всего (from module import )
PytStart | Программирование на Python
5 авг., 13:01
⚡️ functools.cache вместо самодельного мемо — просто и эффективноЗачем писать свои кеши, если Python уже умеет это из коробки? С версии 3.9 появился @cache — аналог lru_cache, но проще и быстрее, если тебе не нужен лимит.✅ Было так (ручной мемо): _cache = {}def fib(n): if n in _cache: return _cache[n] if n <= 1: return n _cache[n] = fib(n-1) + fib(n-2) return _cache[n] 🧠 Работает, но нужно писать проверку, хранить словарь, вручную всё продумывать.🔄 А теперь просто: from functools import cache
PytStart | Программирование на Python
30 июл., 12:12
👩💻 DSL в Python через __call__ и __getitem__ — красиво, читаемо, PythonicХочешь, чтобы твой код выглядел как язык сам по себе? Python позволяет строить мини-языки внутри кода — без библиотек, просто на магии dunder-методов.✔️ Начнём с __call__Он делает объект вызываемым, как функцию: class Hello: def __call__(self, name): return f"Привет, {name}!"h = Hello() print(h("Мир")) # Привет, Мир! Полезно, когда хочется сделать объекты лаконичными. Можно даже прокидывать параметры как в обычной функции.✔️ Теперь __getitem__Позволяет обращаться к объекту через квадратные скобки: class SecretBox:
