Python Hub - сборище Питонистов
Open in Telegram
Уголок счастья для любого питониста. Сотрудничество или заказы: @leshunist https://shcoder.dev - студия разработки ShcoderDevelopment https://t.me/pythonhub_chat - чат
Show more1 710
Subscribers
No data24 hours
-107 days
-1630 days
Posts Archive
Субботний видосик с решением задач
На этот раз попробовал LeetCode
https://www.youtube.com/watch?v=DmIDFBdKWOU
🎓 Генераторы в Python [общие положения] 🎓
Генераторы являются одной из мощных возможностей языка Python. Они позволяют создавать итерируемые объекты без необходимости хранить все значения в памяти.
· Что такое генераторы? · 🧐
Генераторы в Python - это функции, которые возвращают последовательность значений во время выполнения. Они работают по принципу "ленивого вычисления", то есть значения генерируются по мере необходимости. Генераторы используют ключевое слово
yield для возврата значений вместо return, как это делается в обычных функциях.
· Преимущества генераторов · 👍
Генераторы предлагают несколько преимуществ, особенно когда речь идет о работе с большими объемами данных. Во-первых, используя генераторы, мы можем сэкономить память, так как значения необходимо хранить только во время их генерации. Во-вторых, генераторы могут быть бесконечными, что позволяет работать с бесконечными последовательностями данных. В-третьих, генераторы могут быть использованы для ленивой обработки данных, когда нужно обрабатывать данные по мере их получения, а не все сразу.
· Как использовать генераторы? · ❓
Для создания генератора в Python нужно определить функцию, внутри которой будет использоваться ключевое слово yield. Когда вызывается этот генератор, он возвращает итерируемый объект, который можно использовать в циклах for или получать значения с помощью функции next(). Каждый вызов yield возвращает значение из генератора и "замораживает" его состояние, позволяя продолжить выполнение с того же места в следующий раз.Когда-то я уже рассказывал про ребят с хостингом за 1$ 🫣
Пришло время обновить гайд, многое поменялось 😏
Кому актуальна тема недорогого хостинга с подробной инструкцией - welcome😎
https://www.youtube.com/watch?v=pVA8Hd8Zh68
Разбор 👨💻
Пример отлично подойдет тем, кто только недавно познакомился с циклом while.
while not a —> while not 0 —> while True —> цикл бесконечен.
Внутри есть while a —> while 0 —> while False —> мы даже не зайдем во вложенный цикл.
Далее идет print(2) —> выведем 2 в консоль.
Ну а после -> break —> остановим наш бесконечный цикл и завершим работу программы.
Ответ: просто число 2
👨💻Разбор 😎
Разберем построчно:
🌝Создаём функцию-декоратор. Она принимает функцию.
🌝Создаём обвертку, по сути дела эта обвертка выполняется вместо декорируемой функции. Обратите внимание что она принимает все аргументы, и позициональные, и именные.
🌝Выводим "Welcome"
🌝Вызываем оригинальную функцию. Обратите внимание что мы в нее ничего не передаём!
🌝Выводим "bye"
🌝Возвращаем обвертку.
🌝Декорируем функцию нашим декоратором
🌝Создаём функцию
🌝🌝выводим все позициональные аргументы, разделяя их через ", " с помощью параметра sep (от англ. separator -- разделитель). Но тут ничего не выведется! В декораторе мы не передали никаких аргументов!
🌝🌝Вызываем функцию
В итоге выведется только "welcome!" и "bye"
❗️Создать базу данных при помощи SQLAlchemy в Python
SQLAlchemy - это популярная библиотека для работы с базами данных в Python. Она предоставляет удобные инструменты для создания, изменения и управления базами данных с помощью объектно-реляционного отображения (ORM).
🔻 Создание моделей данных
Первый шаг в создании базы данных с использованием SQLAlchemy - это определение моделей данных. Модель данных - это класс, который описывает структуру таблицы в базе данных. Каждый атрибут класса представляет собой столбец в таблице, а каждый экземпляр класса - строку в таблице.
Например, допустим, мы хотим создать базу данных для хранения информации о пользователях. Мы можем создать класс
User, который будет представлять каждого пользователя в базе данных. В этом классе мы определим атрибуты, такие как id, name и email, которые будут соответствовать столбцам в таблице.
🔻 Создание таблицы в базе данных
После определения моделей данных мы можем создать таблицы в базе данных. SQLAlchemy предоставляет метод create_all(), который автоматически создает все таблицы, определенные в моделях данных.
Пример:
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String
# Создание движка базы данных
engine = create_engine('sqlite:///mydatabase.db')
# Создание сессии
Session = sessionmaker(bind=engine)
session = Session()
# Создание базовой модели
Base = declarative_base()
# Определение модели данных
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
email = Column(String)
# Создание таблиц
Base.metadata.create_all(engine)🐍 Разбор 👨💻
Разберем код построчно:
🌝Создаём переменную со списком [6, 0] и сразу его переворачиваем -> l = [0, 6]
🌝Выводим этот список. На экране [0, 6]
🌝Проходимся по нашему списку через enumrate. Enumeratе это генератор, который выдает следующий елемент списка и его порядковый номер. Первый параметр принимает итерируемый объект.
for i, e in enumerate(['a', 'b', 'c']):
print(i, e) # a 0, b 1, c 2
Второй параметр - это с какого числа начинать отсчет.
for i, e in enumerate(['a', 'b', 'c'], 3):
print(i, e) # a 3, b 4, c 5
🌝Выводим изначальный список. Он выведется два раза тк цикл сработает два раза
Вывод: [0, 6] [0, 6] [0, 6]
‼️Создать базу данных SQLite через Python‼️
В Python для работы с SQLite мы будем использовать модуль sqlite3, который входит в стандартную библиотеку Python. Начнем с импорта модуля и создания соединения с базой данных:
import sqlite3
# Создание соединения с базой данных
conn = sqlite3.connect('mydatabase.db')
После создания соединения мы можем создать таблицы в нашей базе данных. Вот пример создания таблицы "users":
# Создание таблицы "users"
conn.execute('''CREATE TABLE users
(id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
age INTEGER NOT NULL);''')
Вставка данных в базу данных
После создания таблицы мы можем добавить данные в базу данных. Для этого мы можем использовать метод execute() и executemany() для вставки одной или нескольких строк данных соответственно. Вот пример вставки данных в таблицу "users":
# Вставка данных в таблицу "users"
conn.execute("INSERT INTO users (name, age) VALUES ('John Doe', 25)")
conn.execute("INSERT INTO users (name, age) VALUES ('Jane Smith', 30)")
conn.executemany("INSERT INTO users (name, age) VALUES (?, ?)", [('Alice Johnson', 35), ('Bob Brown', 40)])Разбор 👨💻
Мы привыкли использовать функцию sum() для подсчета суммы элементов в списке.
Но тут немного другая история.
Как видно из кейса, мы передаем в sum два аргумента. Первый - это список со списками. А второй - это список, в который мы все будем собирать.
То есть, если бы наш второй аргумент был НЕ пустым списком, а имел в себе какие-то элементы, то наш финальный результативный список начинался бы как раз с этих элементов.
Вечер пятницы! Наступают выходные!
Это значит, что на канале вышло новое видео 📹
Особенно полезно будет тем, кто пилит игрушки на Python (Pygame) 🎲🎮
p.s. случайно проспал выход видоса
(лайк,если можешь тоже отрубиться вечером 😴)
https://youtu.be/eR0KnH2Zxaw
Что вы хотите видеть в сторисах на этом канале? (можно выбрать несколько вариантов)
🔥😉🟣😍🙃😅😍😀🟣 🥶🤓
🗣️ В прошлый раз я обещал научить вытаскивать данные из сообщения, этим и займёмся!
🔍Давайте с начала просто посмотрим из чего состоит получаемый объект
@app.on_message(filters.command(["start"], prefixes="."))
async def start(_, msg):
print(msg)
👀В результате увидим много всяких данных. Самые часто используемые - id, text, from_user, chat reply_to_message(сообщение на которое ответили).
🖥 Чтобы достать определенное значение надо перечислить ключи к нему через точку:
➖msg.text
➖msg.chat.id
➖msg.reply_to_message.date
🖥 Теперь попробуем на практике, поприветствуем новых участников в группе
@app.on_message(filters.chat([123,456]) & filters.new_chat_members)
async def welcome(_, msg):
new_members = [u.mention for u in msg.new_chat_members]
text = 'Привет, ' + ", ".join(new_members) + "!"
await msg.reply(text, True disable_web_page_preview=True)
👨💻 Разберем этот код
🌝Создаем Декоратор:
🌝1️⃣ Из определенных чатов ([123,456])
🌝2️⃣ Для новых участников
🌝Создаем функцию
И тут начинается самое то, что нас интересует
🌝Перебираем список новых участников, и из них берем параметр mention - имя с ссылкой.
🌝Формируем текст сообщения, соеденяя список из новый участников с помощью *str.join()* (о нем мы говорили в прошлом посте 👆)
🌝Отвечаем на сообщение ответом и без предпросмотора ссылок
#️⃣Итог
Мы научились доставать данные из сообщения и вспомнили фильтры с обработчиками.
👋До новых встреч!
Available now! Telegram Research 2025 — the year's key insights 
