PytStart | Программирование на Python
4.28K subscribers
23 photos
26 videos
57 links
Python: примеры кода, уроки, статьи

Купить рекламу: https://telega.in/c/pytstart

✍️По всем вопросам: @Pascal4eg
Download Telegram
🐍 Как сделать простой кэш (и ускорить код)

Иногда функция вызывается с одними и теми же аргументами - зачем считать заново? 🤔

Используй встроенный кэш 👇

from functools import lru_cache

@lru_cache(maxsize=128)
def fib(n):
if n < 2:
return n
return fib(n - 1) + fib(n - 2)


💡 Теперь результаты сохраняются, и повторные вызовы работают мгновенно 🚀

📌 Проверка:

print(fib(100)) # считается очень быстро


🔥 Где полезно:
➡️ рекурсия
➡️ тяжёлые вычисления
➡️ API/запросы (с осторожностью)

⚠️ Важно:
➡️ аргументы должны быть хешируемыми
➡️ кэш занимает память

#python #оптимизация
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍1
🐍 Как замерить время выполнения кода (за 1 строку)

Иногда нужно быстро понять - где тормозит код 👇

import time

start = time.time()

# твой код
sum(range(10_000_000))

print(time.time() - start)


💡 Но есть способ лучше - модуль timeit:

import timeit

print(timeit.timeit("sum(range(10_000_000))", number=1))


📌 Почему это круче:
➡️ более точные измерения
➡️ изолированное выполнение
➡️ можно запускать несколько раз

🔥 Для серьёзного анализа - мастхэв

#python #performance
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31
🐍 Как сделать простой HTTP-запрос за 2 строки

Нужно сходить в API? В Python это делается максимально просто 👇

import requests

res = requests.get("https://api.github.com")
print(res.status_code)


💡 Получить JSON:

data = res.json()
print(data)


📌 Отправить POST:

requests.post("https://example.com", json={"name": "Alex"})


🔥 Почему удобно:
➡️ читаемый код
➡️ минимум настроек
➡️ работает “из коробки” (после `pip install requests`)

⚠️ Не забывай обрабатывать ошибки:

if res.status_code == 200:
print("OK")


🚀 База для работы с любыми API

#python #api
Please open Telegram to view this post
VIEW IN TELEGRAM
1
🐍 Как сделать декоратор (и прокачать функции)

Декораторы позволяют оборачивать функции и добавлять им поведение 👇

def log(func):
def wrapper(*args, **kwargs):
print(f"Вызов: {func.__name__}")
return func(*args, **kwargs)
return wrapper


Использование:

@log
def say_hi(name):
print(f"Привет, {name}")

say_hi("Alex")


👉 Вывод:

Вызов: say_hi
Привет, Alex


💡 Где это используется:
— логирование
— проверка прав
— кэширование
— замер времени

🔥 Это основа многих фреймворков (например, Flask, Django)

🚀 Освоишь декораторы - начнёшь писать реально мощный код

#python #продвинутый
Please open Telegram to view this post
VIEW IN TELEGRAM
3
🐍 Как читать JSON и сразу превращать в объекты

Часто работаешь с JSON? Можно сразу превращать его в удобные объекты 👇

import json
from types import SimpleNamespace

data = '{"name": "Alex", "age": 25}'

obj = json.loads(data, object_hook=lambda d: SimpleNamespace(**d))

print(obj.name) # Alex


💡 Теперь вместо data["name"] можно писать obj.name

📌 Если JSON вложенный - это тоже работает:

data = '{"user": {"name": "Alex"}}'
obj = json.loads(data, object_hook=lambda d: SimpleNamespace(**d))

print(obj.user.name)


🔥 Удобно для:
— работы с API
— прототипирования
— чистого кода без []

⚠️ Но будь осторожен:
— нет автодополнения как у dataclass
— меньше контроля над структурой

🚀 Быстро и красиво

#python #json
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21
🐍 Как сделать собственный контекстный менеджер (with)

Ты наверняка использовал такое 👇

with open("file.txt") as f:
data = f.read()


Но можно создавать и свои with 👀

from contextlib import contextmanager

@contextmanager
def timer():
import time

start = time.time()
yield
print(time.time() - start)


Использование:

with timer():
sum(range(10_000_000))


💡 Что происходит:
🔹 код до yield выполняется при входе
🔹 код после yield при выходе

🔥 Где полезно:
🔹 таймеры
🔹 подключение к БД
🔹 временные файлы
🔹 управление ресурсами

#python #advanced
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍2
🐍 Лямбда-выражения: маленькие функции с большим потенциалом

lambda — это способ создать анонимную функцию прямо в момент использования.
Когда нужна простая операция «на лету», писать полноценный def бывает избыточно.

Синтаксис:

lambda аргументы: выражение


Пример:

square = lambda x: x ** 2

print(square(5)) # 25


То же самое через def:

def square(x):
return x ** 2


📌 Где lambda особенно полезны?

1️⃣ Сортировка

users = [
{"name": "Anna", "age": 25},
{"name": "Bob", "age": 20},
]

users.sort(key=lambda user: user["age"])

print(users)


2️⃣ Работа с map()

numbers = [1, 2, 3, 4]

squared = list(map(lambda x: x ** 2, numbers))

print(squared)


3️⃣ Фильтрация через filter()

numbers = [1, 2, 3, 4, 5, 6]

evens = list(filter(lambda x: x % 2 == 0, numbers))

print(evens)


⚠️ Важно помнить:
* lambda подходит только для ОДНОГО выражения
* сложную логику лучше выносить в обычные функции
* читаемость кода важнее «красоты»

Плохой пример:

lambda x: x ** 2 if x > 0 else 0 if x == 0 else -1


Иногда обычный def намного понятнее 👌

💡 Правило:
Если lambda читается за пару секунд - отлично.
Если нужно всматриваться - пишем обычную функцию.

#python #backend #programming #coding
Please open Telegram to view this post
VIEW IN TELEGRAM
4❤‍🔥1
🐍 Как сделать бесконечный счётчик без переменных

В Python есть модуль itertools с кучей мощных инструментов 👇

from itertools import count

for i in count(1):
print(i)


👉 Вывод:

1
2
3
...


💡 count(1) создаёт бесконечный генератор чисел начиная с 1

📌 Можно указать шаг:

from itertools import count

for i in count(0, 5):
print(i)


👉 Результат:

0
5
10
15
...


🔥 Полезно для:
— генерации ID
— бесконечных циклов
— работы с потоками данных

⚠️ Осторожно: цикл реально бесконечный 😄

#python #itertools
Please open Telegram to view this post
VIEW IN TELEGRAM
4
🐍 Как сделать простой Telegram-бот на Python

Минимальный бот — буквально в несколько строк 👇

from telegram import Update
from telegram.ext import ApplicationBuilder, MessageHandler, filters, ContextTypes

async def echo(update: Update, context: ContextTypes.DEFAULT_TYPE):
await update.message.reply_text(update.message.text)

app = ApplicationBuilder().token("TOKEN").build()

app.add_handler(MessageHandler(filters.TEXT, echo))

app.run_polling()


📌 Установка:

pip install python-telegram-bot


💡 Что делает бот:
— получает сообщение
— отправляет его обратно

🔥 Дальше можно добавить:
— команды
— кнопки
— базы данных
— AI / API

🚀 Отличный старт для своих Telegram-проектов

#python #telegram #bot
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍1
🐍 Как распаковать список прямо в аргументы функции

В Python можно передать список как отдельные аргументы с помощью * 👇

def add(a, b, c):
print(a + b + c)

nums = [1, 2, 3]

add(*nums)


👉 Результат:

6


💡 Что происходит:

add(*nums)


Python превращает это в:

add(1, 2, 3)


📌 Работает и с кортежами:

coords = (10, 20)

print(*coords)


🔥 Очень полезно при:
— работе с функциями
— динамических данных
— распаковке API-ответов

🚀 *args и распаковка - одна из самых удобных фишек Python

#python #фишки
Please open Telegram to view this post
VIEW IN TELEGRAM
👍52