Python Скрипты
2.87K subscribers
11 photos
12 videos
12 files
16 links
Download Telegram
telegram-feedback-bot-master.zip
54.9 KB
🖥 Скрипт обратная связь

💻 ЯП: Python 3.11+🐍
💾 Модули: aiogram 3.*

📌 Скрипт Telegram бота для обратной связи без использования БД(сохранение id пользователей и извлечение их из отдельного чата с администратором).

📌 Вся информация приведена исключительно в ознакомительных целях

#telegram
Please open Telegram to view this post
VIEW IN TELEGRAM
👍96🥰2
python-file-analyzer-main.zip
15.1 KB
⚡️ Скрипт анализ файлов python

🖥 ЯП: Python 3.11+🐍
💾 Модули: ast,sys,os, collections
📂 База данных: -

💡 Скрипт, позволяющий анализировать ваш файл python.

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

📌 Вся информация приведена исключительно в ознакомительных целях📌📌📌
Please open Telegram to view this post
VIEW IN TELEGRAM
👍72
📌 Менеджер паролей 👨‍💻

import csv
from cryptography.fernet import Fernet

passwords = []
key = Fernet.generate_key()
cipher_suite = Fernet(key)

def encrypt_password(password):
return cipher_suite.encrypt(password.encode())

def decrypt_password(encrypted_password):
return cipher_suite.decrypt(encrypted_password).decode()

def add_password():
website = input("Website: ")
username = input("Username: ")
password = input("Password: ")
encrypted_password = encrypt_password(password)
passwords.append({
"website": website,
"username": username,
"password": encrypted_password
})
with open('passwords.csv', mode='a', newline='') as file:
writer = csv.writer(file)
writer.writerow([website, username, encrypted_password])

def get_password(website):
for entry in passwords:
if entry["website"] == website:
username = entry["username"]
encrypted_password = entry["password"]
decrypted_password = decrypt_password(encrypted_password)
print(f"Website: {website}")
print(f"Username: {username}")
print(f"Password: {decrypted_password}")
return
print("Website not found")

with open('passwords.csv', mode='r') as file:
reader = csv.reader(file)
for row in reader:
passwords.append({
"website": row[0],
"username": row[1],
"password": row[2]
})

while True:
print("\n1. Add Password")
print("2. Get Password")
print("3. Exit")

choice = input("Enter your choice: ")

if choice == '1':
add_password()
elif choice == '2':
website = input("Enter website: ")
get_password(website)
elif choice == '3':
break
else:
print("Invalid choice")
   

#минипроект
💩6🔥4🤡4💊3
🐍 Хитрая задача для опытных Python-разработчиков
Почему этот код не работает как ожидается?


def magic():
return [lambda: i for i in range(5)]

funcs = magic()
results = [f() for f in funcs]
print(results)

На первый взгляд, ты ожидаешь результат:


[0, 1, 2, 3, 4]

Но на деле вывод будет:


[4, 4, 4, 4, 4]

🔍 Что пошло не так

lambda: i не захватывает значение i, а замыкается на саму переменную i, которая одна и та же для всех лямбд.
К моменту вызова всех функций i = 4 (последнее значение цикла), и все лямбды возвращают одно и то же.

Это классический пример late binding — лямбда "вспоминает" переменную, а не её значение в момент создания.

Как исправить

Способ 1: фиксируем значение i через аргумент по умолчанию


def magic():
return [lambda i=i: i for i in range(5)]

funcs = magic()
results = [f() for f in funcs]
print(results)


Теперь вывод:


[0, 1, 2, 3, 4]


Способ 2: functools.partial


from functools import partial

def f(x): return x
funcs = [partial(f, i) for i in range(5)]
results = [f() for f in funcs]
print(results)


🧠 Почему это важно

Такие баги встречаются:

- в колбэках и ивентах (например, при работе с GUI или CLI)

- в генерации функций внутри циклов
- в async-замыканиях и DSL-интерпретаторах
- в тестовых фреймворках, где создаются сценарии динамически

Понимание области видимости, замыканий и позднего связывания (late binding) — необходимый навык для confident-сеньора.

@python_interview
6👍3
This media is not supported in your browser
VIEW IN TELEGRAM
🖥 Хитрый способ изменить поведение цикла for — без изменения самого цикла

Можно ли сделать так, чтобы весь Python-код, использующий for x in ..., внезапно начал вести себя иначе — без изменения самого цикла?

Ответ: да, если переопределить поведение итератора. На экране показа — трюк, где обычный список «врет» в цикле и выдает неожиданные значения.

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


class FakeList(list):
def __iter__(self):
return iter(["test", "mock", "override"])

data = FakeList([1, 2, 3])
for x in data:
print(x) # выведет: test, mock, override


https://youtube.com/shorts/QhZtRx1ukoc?feature=share
Please open Telegram to view this post
VIEW IN TELEGRAM
👎4
Microsoft выкатили **amplifier** - новую экспериментальную платформу для сборки AI-инструментов без лишнего кода.

Что это:
- способ описать экспертный процесс в виде шагов и автоматически превратить его в работающий инструмент;
- возможность комбинировать такие инструменты между собой, создавая цепочки автоматизации;
- платформа для исследований, поэтому всё ещё активно меняется.

Чем хорош инструмент:
- позволяет быстро превращать повторяющиеся задачи в автономные AI-процессы;
- помогает строить «агентов» с ролями — исследователь, критик, исполнитель;
- снижает порог входа: достаточно описать логику, а не писать всю реализацию.


Это пока исследовательский проект, но потенциал — большой.

👉 Репозиторий: https://github.com/microsoft/amplifier

@pythonl
6🦄2
This media is not supported in your browser
VIEW IN TELEGRAM
🚨 SQL Никогда НЕ ДЕЛАЙ ТАК #sql

НИКОГДА НЕ ЛОМАЙ ИНДЕКСЫ ФУНКЦИЯМИ: не оборачивай индексируемые поля в функции внутри WHERE.

Как только ты пишешь LOWER(), CAST(), COALESCE() или любые вычисления по колонке — индекс перестаёт работать, и запрос падает в полное сканирование таблицы.

Это одна из самых тихих причин, почему запросы внезапно превращаются в тормоза.

Вместо этого приводи значения заранее или используй функциональные индексы.


Плохо: индекс по email НЕ используется
SELECT *
FROM users
WHERE LOWER(email) = 'user@example.com';

-- Хорошо: нормализуем значение заранее
SELECT *
FROM users
WHERE email = 'user@example.com';

-- Или создаём функциональный индекс (PostgreSQL)
CREATE INDEX idx_users_email_lower ON users (LOWER(email));


https://www.youtube.com/shorts/AyiAslOeJFA
5👍2
This media is not supported in your browser
VIEW IN TELEGRAM
📃 КАК СОЗДАТЬ ФАЙЛ В PYTHON ПРОЩЕ ВСЕГО

Самый простой и надёжный способ создать файл в Python это использовать встроенную функцию open в режиме записи. Python автоматически создаёт файл если его нет и сразу даёт доступ для записи. Такой подход работает на любых системах и не требует дополнительных библиотек. Подписывайся, больше фишек каждый день !
4
⚡️ Полное руководство по Bash: от основ к продвинутым темам

Bash (Bourne Again SHell) — это одна из самых популярных Unix-оболочек, широко используемая для запуска команд и написания скриптов в Linux и macOS.

Скрипты Bash позволяют автоматизировать рутинные задачи, объединять команды в программы и управлять системой через командную строку.

Данное руководство последовательно познакомит вас с основами Bash (синтаксис, переменные, условия, циклы и т.д.), а затем перейдет к продвинутым возможностям (таким как настройка strict mode, использование trap-обработчиков, планирование задач через cron и др.). Мы рассмотрим практические примеры скриптов, сопровождая их поясняющими комментариями, чтобы у вас сложилось цельное понимание создания надежных Bash-скриптов.

https://uproger.com/polnoe-rukovodstvo-po-bash-ot-osnov-k-prodvinutym-temam/

Видео: https://www.youtube.com/watch?v=ei0a1TT4ukU
9🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
🖥 БЫСТРЫЙ СЕРВЕР ДЛЯ PYTHON ЗА 5 МИНУТ

Нужно быстро поднять сервер под Python-проект без лишней возни?
Ставим системные пакеты, создаём отдельного пользователя, настраиваем venv, делаем systemd-сервис и сразу получаем автозапуск + рестарт при падении.

Идеально для FastAPI / Flask / любых API и ботов.


sudo apt update && sudo apt install -y python3-venv python3-pip nginx
sudo useradd -m -s /bin/bash app && sudo mkdir -p /opt/app && sudo chown -R app:app /opt/app
sudo -u app bash -lc 'cd /opt/app && python3 -m venv venv && ./venv/bin/pip install -U pip uvicorn fastapi'

sudo tee /etc/systemd/system/app.service >/dev/null <<'EOF'
[Unit]
After=network.target

[Service]
User=app
WorkingDirectory=/opt/app
ExecStart=/opt/app/venv/bin/uvicorn main:app --host 0.0.0.0 --port 8000
Restart=always

[Install]
WantedBy=multi-user.target
EOF

sudo systemctl daemon-reload
sudo systemctl enable --now app
sudo systemctl status app --no-pager


https://www.youtube.com/shorts/cbUNWU1Sbsc
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍1
🖥 Подробный вводный курс по парсингу на Python 2026 года

В этом бесплатном курсе вы шаг за шагом научитесь собирать данные с веб-сайтов с помощью Python. Мы начнём с основ парсинга (скрапинга) - автоматического сбора информации с веб-страниц – и постепенно перейдём к более продвинутым темам.

Материал разбит на модули с понятными примерами и практическими заданиями после каждой темы. Курс рассчитан на начинающих и продолжающих (junior/middle) разработчиков, знакомых с основами Python.

📌 Гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
3
This media is not supported in your browser
VIEW IN TELEGRAM
⚡️ Экономичный способ развернуть DeepSeek локально запускай модель через Ollama.

Так ты получаешь мощную LLM на своём ПК без облака и без огромных требований к железу.

Что важно:

- выбирай DeepSeek Distill 7B/8B или 14B
- формат GGUF + квантизация Q4 (лучший баланс)
- поднимаешь как локальный API и дергаешь из Python, бота или агента

Плюс:

- приватность - всё работает локально
- дешево - не нужен сервер
- можно быстро менять модель, не трогая код


# 1) Установи Ollama (macOS/Linux/Windows)
# https://ollama.com

# 2) Запусти экономичную DeepSeek модель
ollama pull deepseek-r1:8b
ollama run deepseek-r1:8b

# 3) Проверка: запрос к локальному API
curl http://localhost:11434/api/generate \
-d '{"model":"deepseek-r1:8b","prompt":"Explain transformers simply","stream":false}'

# 4) Использование из Python
python - << 'PY'
import requests

r = requests.post(
"http://localhost:11434/api/generate",
json={
"model": "deepseek-r1:8b",
"prompt": "Сделай краткий план изучения SQL за 7 дней",
"stream": False
},
timeout=120
)

print(r.json()["response"])
PY



https://www.youtube.com/shorts/zjn2pXrGbXI
4👍4👎1🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
🖥 PYTHON МАТЕМАТИКА КАК У ПРОФИ

Ппрофессиональный подход к математике в Python строится не вокруг «посчитать формулу», а вокруг правильного стека инструментов и воспроизводимости. Всегда разделяй символьную математику, численные методы и работу с данными.

Для аналитики и вывода формул используй SymPy, для быстрых численных расчётов - NumPy, для научных алгоритмов - SciPy, для больших таблиц экспериментов - Pandas.

Никогда не смешивай «магические числа» в коде - все параметры выноси в переменные. Работай в Jupyter или VS Code с ноутбуками, фиксируй версии библиотек и обязательно проверяй устойчивость решений через разные методы (например, интеграл численно и аналитически). Так код становится не просто расчётом, а научным инструментом.


import numpy as np
import sympy as sp
from scipy import integrate

# 1. Символьная математика
x = sp.symbols('x')
expr = sp.sin(x) / x
analytic_integral = sp.integrate(expr, (x, 1, 10))

# 2. Численная математика
f = lambda x: np.sin(x) / x
numeric_integral, error = integrate.quad(f, 1, 10)

# 3. Векторизация вместо циклов
arr = np.linspace(1, 10, 1_000_000)
fast_result = np.sin(arr) / arr

print("Analytic:", analytic_integral)
print("Numeric:", numeric_integral, "Error:", error)


https://www.youtube.com/shorts/UAcoiqRthrE
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Управление зависимостями в Python проектах

Важно знать, что управление зависимостями в проектах на Python - это ключевой аспект, который часто упускается из виду на курсах. Использование виртуальных окружений и файла зависимостей, таких как `requirements.txt`, поможет избежать конфликтов между библиотеками и упростит развертывание проектов.

Подписывайся, больше фишек каждый день !

# Создание виртуального окружения
python -m venv myenv
# Активация виртуального окружения
# На Windows
myenv\Scripts\activate
# На macOS/Linux
source myenv/bin/activate
# Установка зависимостей
pip install requests numpy
# Сохранение зависимостей в файл
pip freeze > requirements.txt
# Установка зависимостей из файла
pip install -r requirements.txt

t.me/ai_machinelearning_big_data - наш телеграм канал с уроками
This media is not supported in your browser
VIEW IN TELEGRAM
⚡️ Python-код, который работает, но делает лишнее в 100 раз

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

Самая частая причина — ты случайно превращаешь линейный алгоритм в квадратичный.

Типичный сценарий:
- есть список
- внутри цикла ты каждый раз делаешь in, count, index
- на маленьких данных всё быстро
- на реальных — приложение начинает «тормозить без причины»

Проблема в том, что:
- list — это O(n) для поиска
- поиск внутри цикла = O(n²)
- Python честно делает работу, которую ты ему попросил

Профи думают не «работает или нет», а сколько лишних операций выполняется.

Правильный подход:
- если нужны проверки принадлежности — используй set
- если считаешь элементы — используй dict или Counter
- если данные не меняются — предвычисляй один раз

Этот приём один из самых частых источников скрытых performance-багов в Python-коде.


# Плохо: O(n²)
users = ["alice", "bob", "carol", "dave"]

for u in users:
if u in users: # каждый раз полный проход списка
process(u)


# Хорошо: O(n)
users = ["alice", "bob", "carol", "dave"]
users_set = set(users)

for u in users:
if u in users_set:
process(u)
👎42👍1
This media is not supported in your browser
VIEW IN TELEGRAM
👇Python баг, который выглядит безобидно… но ломает логику #python

fruits = ["apple", "lime", "orange",
"pineapple", "orange"]

for f in fruits:
if f == "orange":
fruits.remove(f)

print(fruits)
Ожидание: оба orange удалятся.

Реальность: один orange остаётся.

Почему так происходит?

Ты изменяешь список во время итерации.
После удаления элементы сдвигаются, и цикл пропускает следующий элемент.

Это классический сценарий продакшн-багов:

• код выглядит правильно
• тесты могут пройти
• но данные обрабатываются неправильно

Правильный вариант:
fruits = [f for f in fruits if f != "orange"]
Мораль:
Изменяешь коллекцию во время обхода -Deploy first. Pray later.
3👍1💊1
🤡4💘1
Media is too big
VIEW IN TELEGRAM
🐍 Python-библиотеки - сложность изучения 🔥

🌐 Requests - 🟢 Легко
📊 Pandas - 🟢 Легко
🔢 NumPy - 🟢 Легко
📈 Matplotlib - 🟢 Легко
🕸️ BeautifulSoup - 🟢 Легко

FastAPI - 🟡 Легко–Средне
🧩 Pydantic - 🟡 Легко–Средне
📦 Pytest - 🟡 Легко–Средне

🗄️ SQLAlchemy - 🟠 Средне
🤖 Scikit-Learn - 🟠 Средне
🔥 PyTorch - 🟠 Средне
🧠 TensorFlow - 🟠 Средне
📉 Statsmodels - 🟠 Средне

🧬 Dask - 🔴 Сложно
Ray - 🔴 Сложно

🔗 LangChain - 🟠 Средне
🧠 LangGraph - 🟣 Очень сложно

Самые лёгкие, вроде Requests или BeautifulSoup, решают одну конкретную задачу.
У них простой API — сделал запрос, получил данные, готово.

Чуть сложнее библиотеки вроде FastAPI или Pydantic.
Они требуют понимания архитектуры приложений, валидации данных и работы серверов.

Средний уровень - SQLAlchemy, PyTorch, TensorFlow.
Здесь уже нужно понимать базы данных, машинное обучение и математические модели.

А вот Dask и Ray считаются сложными не потому, что код длинный. А потому что они работают с распределёнными вычислениями - кластеры, параллельность, управление ресурсами.

То есть чем выше уровень библиотеки, тем больше системного мышления и архитектуры нужно понимать.

Поэтому сложность Python-библиотек -
это не про Python. Это про уровень задач, которые они решают.
#Python #PythonDev #MachineLearning

https://www.youtube.com/shorts/vDm-vYmoxx0

🐍 Python полезные ресурсы 🚀Max
👍4🤮1
Forwarded from Python/ django
This media is not supported in your browser
VIEW IN TELEGRAM
🚀 Себастьян Рашка собрал в одном месте галерею архитектур современных языковых моделей.

Внутри - 40+ моделей (2024–2026):
от DeepSeek и Qwen до Nemotron и Grok.

Для каждой модели есть:

• наглядная схема архитектуры
• размер и число параметров
• тип декодера
• ссылки на технические отчёты и конфиги
• иногда даже реализации

По сути это единая карта современных LLM
, где можно быстро посмотреть, как устроены разные модели и как эволюционируют архитектуры.

https://sebastianraschka.com/llm-architecture-gallery/

🐍 Python полезные ресурсы 🚀Max

@pythonl
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍2🔥1
🚀 Ты всё ещё называешь обёртку над ChatGPT «AI-продуктом»?

Пока ты пишешь промпты - рынок уже ушёл дальше.

Сейчас выигрывают не те, кто умеет красиво формулировать запросы, а те, кто строит агентные системы:
- принимают решения сами
- ходят в API
- работают с Postgres и Redis
- управляют браузером через Playwright
- доводят задачи до результата без человека

И вот правда, о которой мало говорят:

90% таких систем умирают между ноутбуком и продом.

Работает локально. Ломается в реальности.
Нет архитектуры. Нет устойчивости. Нет деплоя.

AI Agents Engineering - курс со Stepik, который закрывает этот разрыв.

- LangGraph, AutoGen, Computer Use
- архитектура агентов, а не «скрипты на коленке»
- LLMOps, логирование, стабильность
- деплой в Docker и работа в проде

8 модулей, 120+ шагов, всё через практику.

На выходе не «сертификат ради галочки», а:
- рабочий production-агент
- понимание, как строить такие системы с нуля
- навыки, за которые уже платят

Сейчас самое окно входа.
Через полгода это станет базой, а не преимуществом.

Скидка 55% действует ещё 48 часов: https://stepik.org/a/276971/
👍32
Создание новой переменной в Python фактически означает создание нового имени для уже существующего объекта. Именно поэтому этот процесс называется связыванием имени (name binding).

Существует множество способов связать имя с объектом. Вот примеры того, как можно связать x:


x = y # Присваивание
import x # Импорт модуля
class x: pass # Определение класса
def x(): pass # Определение функции
def y(x): pass # Определение аргумента функции
for x in y: pass # Перебор элементов в цикле
with y as x: pass # Использование в конструкции with
except y as x: pass # Обработка исключения


Также можно привязать имя к объекту, манипулируя глобальным пространством имен:


In : x
NameError: name 'x' is not defined # Ошибка: переменная x не определена

In : globals()['x'] = 42 # Присваивание через globals()
In : x
Out: 42 # Теперь x привязан к 42


Однако нельзя сделать то же самое с locals(), так как изменения словаря locals() игнорируются.
👍21