fa
Feedback
Python Hub - сборище Питонистов

Python Hub - сборище Питонистов

رفتن به کانال در Telegram

Уголок счастья для любого питониста. Сотрудничество или заказы: @leshunist https://shcoder.dev - студия разработки ShcoderDevelopment https://t.me/pythonhub_chat - чат

نمایش بیشتر
1 753
مشترکین
-324 ساعت
+27 روز
+430 روز
آرشیو پست ها
Gift
telegram star500

برندگان انتخاب شدند!

5 برنده قرعه‌کشی

تاریخ پایان

👩‍💻 Итерируемый счетчик в Python ➡️ Что такое итерируемый счетчик? Итерируемый счетчик в Python - это объект, который можно
👩‍💻 Итерируемый счетчик в Python ➡️ Что такое итерируемый счетчик? Итерируемый счетчик в Python - это объект, который можно использовать в цикле for и других итерационных контекстах. Он позволяет последовательно получать значения, обычно числовые, в заданном диапазоне или по определенному правилу. ➡️ Реализация итерируемого счетчика Давайте рассмотрим пример реализации простого итерируемого счетчика:
class IterableCounter:
    def __init__(self, start, end):
        self.current = start
        self.end = end

    def __iter__(self):
        return self

    def __next__(self):
        if self.current > self.end:
            raise StopIteration
        else:
            self.current += 1
            return self.current - 1
В этом примере: - init инициализирует счетчик начальным и конечным значениями. - iter возвращает сам объект, делая его итератором. - next определяет логику получения следующего значения. ➡️ Использование итерируемого счетчика Теперь мы можем использовать наш счетчик в цикле for:
counter = IterableCounter(1, 5)
for num in counter:
    print(num)
Этот код выведет числа от 1 до 5. ➡️ Преимущества итерируемого счетчика - Гибкость: можно легко изменить логику генерации значений. - Экономия памяти: значения генерируются по мере необходимости. - Интеграция с циклами: легко использовать в стандартных конструкциях Python. ➡️ Альтернативы В Python есть встроенные альтернативы для простых случаев: - range(): для последовательностей целых чисел. - enumerate(): для нумерации элементов итерируемого объекта. ➡️ Заключение Итерируемые счетчики в Python - мощный инструмент для создания пользовательских последовательностей. Они особенно полезны, когда стандартные функции не удовлетворяют специфическим требованиям вашей задачи.

🔥 Эффекты сообщений message_effect_id в Telegram Bot API message_effect_id - это уникальный идентификатор, используемый в Te
🔥 Эффекты сообщений message_effect_id в Telegram Bot API message_effect_id - это уникальный идентификатор, используемый в Telegram Bot API для определения конкретного визуального эффекта, который можно применить к сообщению. Эти эффекты представляют собой анимированные реакции, которые пользователи могут добавлять к сообщениям. ➡️ Основные характеристики message_effect_id: Уникальность: Каждый эффект имеет свой уникальный числовой идентификатор.Формат: Идентификаторы представлены в виде строк, содержащих длинные числовые значения.Связь с эмодзи: Каждый message_effect_id соответствует определенному эмодзи, которое визуально представляет эффект. ➡️Примеры message_effect_id:
{
    '🔥': "5104841245755180586",
    '👍': "5107584321108051014",
    '👎': "5104858069142078462",
    '❤️': "5044134455711629726",
    '🎉': "5046509860389126442",
    '💩': "5046589136895476101"
}
➡️Использование в Telegram Bot API: Применение эффектов: Боты могут использовать эти идентификаторы для добавления анимированных реакций к сообщениям.Интерактивность: Позволяет создавать более динамичные и интерактивные взаимодействия в чатах.Кастомизация: Разработчики могут выбирать конкретные эффекты для различных сценариев использования бота. ➡️ Значение для разработчиков: Понимание и правильное использование message_effect_id позволяет разработчикам ботов создавать более привлекательные и интерактивные интерфейсы, улучшая пользовательский опыт в Telegram.

⭐️ Гооооооооо! ⭐️⭐️⭐️ Полезный видос про оплату телеграм старсами в вашем боте https://youtu.be/Pu40gtIaJmE

Gift
telegram star500

جوایز قرعه‌کشی

500 ستاره بین 5 برنده توزیع خواهد شد.

تاریخ پایان

Напоминаю!

Разбор 👨‍💻 Метод find() возвращает индекс первого вхождения указанного символа или подстроки в строке. Если символ или подстрока не найдены, метод find() возвращает -1 Регистр тоже играет важную роль! Помни, что "a" - это не то же самое что "A"

Что выдаст код выше?
Anonymous voting

☝️ Полиморфизм в Python: перегрузка и переопределение методов Полиморфизм - ключевой принцип объектно-ориентированного програ
☝️ Полиморфизм в Python: перегрузка и переопределение методов Полиморфизм - ключевой принцип объектно-ориентированного программирования (ООП), позволяющий объектам различных классов иметь одинаковый интерфейс. Термин "полиморфизм" происходит от греческого слова, означающего "множество форм". В Python полиморфизм реализуется двумя основными способами: перегрузкой методов и их переопределением. ⏩ Перегрузка методов Перегрузка методов - это возможность класса иметь несколько методов с одинаковым именем, но разными параметрами. В Python прямая перегрузка методов не поддерживается, но похожего эффекта можно достичь с помощью параметров по умолчанию и аргументов переменной длины. ⏩ Пример перегрузки метода
class MathOperations:
    def add(self, a, b, c=0):
        return a + b + c

math_op = MathOperations()
print(math_op.add(10, 20))       # Вывод: 30
print(math_op.add(10, 20, 30))   # Вывод: 60
В этом примере метод add() может принимать два или три аргумента, имитируя перегрузку метода. ⏩ Переопределение методов Переопределение методов - это механизм, позволяющий подклассу предоставить свою реализацию метода, уже определенного в родительском классе. Это позволяет изменять или расширять поведение унаследованных методов. ## Пример переопределения метода
class Animal:
    def sound(self):
        return "Какой-то звук"

class Dog(Animal):
    def sound(self):
        return "Гав"

class Cat(Animal):
    def sound(self):
        return "Мяу"

dog = Dog()
cat = Cat()
print(dog.sound())  # Вывод: Гав
print(cat.sound())  # Вывод: Мяу
В этом примере классы Dog и Cat переопределяют метод sound(), унаследованный от класса Animal. ⏩ Практическое применение полиморфизма Рассмотрим пример использования полиморфизма в системе обработки платежей:
class Payment:
    def process(self, amount):
        raise NotImplementedError("Подклассы должны реализовать этот метод")

class CreditCardPayment(Payment):
    def process(self, amount):
        return f"Обработан платеж кредитной картой на сумму {amount}."

class PayPalPayment(Payment):
    def process(self, amount):
        return f"Обработан платеж через PayPal на сумму {amount}."

credit_card = CreditCardPayment()
paypal = PayPalPayment()

print(credit_card.process(100))
print(paypal.process(200))
Этот пример демонстрирует, как полиморфизм позволяет работать с разными типами платежей через единый интерфейс. ⏩ Заключение Полиморфизм в Python, реализуемый через переопределение методов и имитацию перегрузки, обеспечивает гибкость и возможность повторного использования кода. Эти концепции позволяют создавать более модульные, расширяемые и легко поддерживаемые программы. Эффективное использование полиморфизма - ключ к написанию чистого и элегантного кода на Python. Источник: Python Hub - сборище Питонистов 👩‍💻

Облегчить работу с базой данных можно при помощи ORM. Смотрите в видео https://youtu.be/mkffUPgwFXY

Gift
telegram star500

جوایز قرعه‌کشی

500 ستاره بین 5 برنده توزیع خواهد شد.

تاریخ پایان

✍️ Рисование с помощью Tkinter в Python Tkinter - это мощный модуль Python для создания графических пользовательских интерфей
✍️ Рисование с помощью Tkinter в Python Tkinter - это мощный модуль Python для создания графических пользовательских интерфейсов (GUI). Хотя он часто используется для создания стандартных элементов интерфейса, таких как кнопки и текстовые поля, Tkinter также предоставляет возможности для создания приложений для рисования, подобных Paint. ➡️ Создание холста для рисования Основой для рисования в Tkinter является виджет Canvas (холст). Вот как можно создать простое окно с холстом:
from tkinter import *

class Application(Frame):
    def __init__(self, master):
        super().__init__(master)
        self.master = master
        self.pack()
        self.create_widget()

    def create_widget(self):
        self.canvas = Canvas(self, width=200, height=200, bg='white')
        self.canvas.pack()
        self.canvas.bind('<B1-Motion>', self.draw)

    def draw(self, event):
        self.canvas.create_oval(event.x, event.y, event.x+1, event.y+1)

root = Tk()
root.geometry('200x200')
app = Application(root)
root.mainloop()
➡️Как работает рисование Ключевой метод для рисования - это функция draw:
def draw(self, event):
    self.canvas.create_oval(event.x, event.y, event.x+1, event.y+1)
Этот метод создает маленький овал (фактически, точку) в позиции курсора мыши. Метод вызывается каждый раз, когда пользователь перемещает мышь с зажатой левой кнопкой (событие &lt;B1-Motion&gt;). ➡️ Настройка размера кисти Вы можете легко изменить размер "кисти", увеличив размер создаваемого овала:
def draw(self, event):
    brush_size = 5
    x1, y1 = (event.x - brush_size), (event.y - brush_size)
    x2, y2 = (event.x + brush_size), (event.y + brush_size)
    self.canvas.create_oval(x1, y1, x2, y2, fill='black')
➡️ Добавление функциональности Вы можете расширить функциональность вашего приложения для рисования, добавив следующие возможности: - Выбор цвета кисти - Изменение размера кисти - Очистка холста - Сохранение рисунка Источник: Python Hub - сборище Питонистов 👩‍💻

📕 Добавление многоязычности в Django Добавление поддержки нескольких языков в Django может быть сложной задачей для новичков
📕 Добавление многоязычности в Django Добавление поддержки нескольких языков в Django может быть сложной задачей для новичков. В этой статье мы рассмотрим пошаговый процесс реализации многоязычности в вашем Django-проекте. ➡️ 1. Настройка проекта Если у вас еще нет готового проекта Django, вы можете создать новый, выполнив следующие шаги:
virtualenv .env
source .env/bin/activate
pip install django
django-admin startproject languages
cd languages
python manage.py migrate
➡️ 2. Включение i18n и l10n Убедитесь, что в вашем файле [settings.py](http://settings.py) включены следующие настройки:
USE_I18N = True
USE_L10N = True
➡️ 3. Перевод в шаблонах Для перевода текста в шаблонах используйте тег {% trans %}:
{% load i18n %}
{% trans "Hello world! This is an HTML5 Boilerplate." %}
➡️ 4. Перевод в представлениях Для перевода текста в представлениях используйте функцию gettext:
from django.utils.translation import gettext as _

def index(request):
    text = _("this is some random text")
    return render(request, 'home.html', {'text': text})
➡️ 5. Создание файлов перевода Создайте каталог для хранения переводов и выполните команду для создания файлов перевода:
mkdir -p locale
django-admin makemessages --ignore="static" --ignore=".env" -l nl
➡️ 6. Редактирование файлов перевода Отредактируйте файл django.po в созданном каталоге locale, добавив переводы для каждой строки:
#: home/templates/home.html:19
msgid "Hello world! This is an HTML5 Boilerplate."
msgstr "Hallo wereld! Dit is een HTML5 Boilerplate."
➡️ 7. Компиляция файлов перевода После редактирования файлов перевода, скомпилируйте их:
django-admin compilemessages
➡️ 8. Настройка языка на основе пользовательских предпочтений Добавьте поле для выбора языка в модель пользователя:
LANGUAGE_CHOICES = (
    ('en-us', 'English'),
    ('nl', 'Dutch'),
)
language = models.CharField(default='en-us', choices=LANGUAGE_CHOICES, max_length=5)
В представлении активируйте язык на основе настроек пользователя:
from django.utils import translation

def index(request):
    if request.user.is_authenticated:
        translation.activate(request.user.language)
    return render(request, 'home.html')
➡️ Заключение Следуя этим шагам, вы сможете добавить поддержку нескольких языков в ваш Django-проект. Не забывайте обновлять файлы перевода при добавлении нового текста и компилировать их после внесения изменений. Оригинал статьи на английском Источник: Python Hub - сборище Питонистов 👩‍💻

📕 Интеграция React с шаблонами Django: Эффективный подход В этой статье мы рассмотрим, как можно эффективно интегрировать Re
📕 Интеграция React с шаблонами Django: Эффективный подход В этой статье мы рассмотрим, как можно эффективно интегрировать React с Django, не создавая полноценное SPA-приложение. ➡️ Проблема традиционного подхода Многие статьи рекомендуют создавать полноценный React SPA и использовать Django только как REST API. Однако такой подход имеет ряд недостатков, особенно для небольших проектов: - Дублирование кода (маршрутизация, аутентификация, авторизация) - Необходимость создания отдельных страниц ошибок - Дублирование состояний и моделей данных Хотя для некоторых проектов это может быть приемлемым решением, для моего небольшого приложения такой подход кажется излишним. ➡️ Альтернативное решение: React как шаблонизатор Идея заключается в том, чтобы использовать React не как полноценный фронтенд-фреймворк, а как шаблонизатор для Django. Это позволит нам сохранить преимущества обоих инструментов. ➡️ Реализация 1. Точки монтирования React React имеет удобное свойство: он монтируется не просто в body DOM или случайное место, а именно в указанный вами элемент. Мы можем использовать это для реализации маршрутизации, используя одну точку монтирования для каждой страницы:
ReactDOM.render(
  &lt;h1&gt;Страница 1!&lt;/h1&gt;,
  document.getElementById('page-1')
);

ReactDOM.render(
  &lt;h1&gt;Страница 2!&lt;/h1&gt;,
  document.getElementById('page-2')
);
2. Маршрутизация на стороне Django На стороне Django нам нужно только отрендерить &lt;div&gt; с соответствующим идентификатором:
{% extends "base.html" %}
{% load static %}

{% block content %}
  &lt;div id="{{ element_id }}"&gt;&lt;/div&gt;
  &lt;script src="{% static 'index.js' %}"&gt;&lt;/script&gt;
{% endblock %}
3. Оптимизация размера пакета Чтобы не загружать JavaScript для неиспользуемых страниц, мы можем использовать встроенную функцию React - Code Splitting:
let Page1 = React.lazy(() => import('./page1'))
let Page2 = React.lazy(() => import('./page2'))

ReactDOM.render(
  &lt;Suspense fallback={&lt;&gt;&lt;/&gt;}&gt;
    &lt;Page1/&gt;
  &lt;/Suspense&gt;,
  document.getElementById('page-1')
);
4. Передача контекстных данных Для передачи данных из Django в React мы можем использовать встроенный в Django тег json_script:
{% extends "base.html" %}
{% load static %}

{% block content %}
  &lt;div id="{{ element_id }}"&gt;&lt;/div&gt;
  {{ page_context | json_script:'page-context' }}
  &lt;script src="{% static 'index.js' %}"&gt;&lt;/script&gt;
{% endblock %}
На стороне React мы можем получить эти данные с помощью пользовательского хука:
export let usePageContext = &lt;T = any&gt;() => {
  let [pageContext, setPageContext] = useState&lt;T | undefined&gt;(undefined)
  useEffect(() => {
    let pageContext = document.getElementById('page-context').textContent
    setPageContext(JSON.parse(pageContext))
  }, [])
  return pageContext as T
}

const TodosIndexPage = memo(() => {
  let pageContext = usePageContext&lt;{ todos: Todo[] }&gt;()
  let todos = pageContext?.todos
  return &lt;&gt;
    &lt;h1&gt;React todos page&lt;/h1&gt;
    &lt;ul&gt;
      {todos?.map(todo => &lt;li key={todo.id}&gt;{todo.title}&lt;/li&gt;)}
    &lt;/ul&gt;
  &lt;/&gt;
})
➡️ Заключение Этот подход позволяет использовать React как шаблонизатор для Django, сохраняя при этом простоту разработки и избегая дублирования кода. Основные шаги для реализации: - Создание отдельных точек монтирования для React - Настройка разделения кода для оптимизации производительности - Реализация маршрутизации на стороне Django - Передача контекста страницы из Django в React - Получение и использование контекста страницы на стороне React Рабочий пример этого подхода можно найти на GitHub в репе этого парня: https://github.com/kozlovzxc/djangoReactTemplates Источник: Python Hub - сборище Питонистов 👩‍💻

📕 Веб-приложения: Что это такое и почему они важны ➡️ Что такое веб-приложение? Веб-приложение - это программное обеспечение
📕 Веб-приложения: Что это такое и почему они важны ➡️ Что такое веб-приложение? Веб-приложение - это программное обеспечение, которое работает в веб-браузере. Основные характеристики веб-приложений включают: - Независимость от платформы - Работа на любом устройстве, включая мобильные - Зависимость от интернет-соединения (как минимум для начальной загрузки) - Динамический контент с частыми обновлениями ➡️ Технологии, лежащие в основе веб-приложений Веб-приложения создаются с использованием различных технологий: - Фронтенд: HTML, CSS и JavaScript - Бэкенд: Node.js, Python (с Django или Flask), Java и другие - Базы данных: SQL и NoSQL варианты (например, MongoDB, PostgreSQL) ➡️ Примеры веб-приложений Многие популярные сервисы, которые мы используем ежедневно, являются веб-приложениями: - Gmail - Google Документы - Trello - Slack - Онлайн-банкинг ➡️ Безопасность в веб-приложениях Веб-приложения имеют преимущество в виде встроенных функций безопасности, таких как HTTPS для шифрования передаваемых данных. Это освобождает разработчиков от необходимости создавать меры безопасности с нуля. ➡️ Время загрузки веб-приложений Типичное время загрузки веб-приложений: - Первая загрузка: около 7-8 секунд - Последующие загрузки: около 1 секунды (благодаря кэшированию) ➡️ Гибридный подход Многие компании используют гибридный подход: - Веб-сайт для презентации и продажи идеи (оптимизирован для SEO) - Веб-приложение для основного продукта (оптимизировано для удобства пользователей) ➡️ Почему веб-приложения важны? Веб-приложения имеют ряд преимуществ, которые делают их важными в современном мире: - Доступность с любого устройства с браузером - Не требуют установки и обновления на устройстве пользователя - Легко обновляются и поддерживаются разработчиками - Обеспечивают единообразный пользовательский опыт на разных платформах Источник: Python Hub - сборище Питонистов 👩‍💻

📕 Как создать QR-генератор с помощью Flask и qrcode ➡️ Настройка четверга среды Шаг 1: Настройка проекта - Установите Python
📕 Как создать QR-генератор с помощью Flask и qrcode ➡️ Настройка четверга среды Шаг 1: Настройка проекта - Установите Python с официального сайта - Создайте файлы: app.py templates/index.html` Шаг 2: Установка библиотек
pip install qrcode Flask
➡️ Реализация Шаг 3: Написание кода Откройте файл app.py и добавьте следующий код:
import qrcode
from flask import Flask, request, render_template, send_file

app = Flask(__name__)

@app.route("/", methods=["GET", "POST"])
def generate_qr():
    if request.method == "POST":
        data = request.form["data"]
        qr_img = qrcode.make(data)
        
        qr_path = "static/qr_code.png"
        qr_img.save(qr_path)
        
        return send_file(qr_path, mimetype='image/png')
    
    return render_template("index.html")

if __name__ == "__main__":
    app.run(debug=True)
Теперь откройте файл templates/index.html и добавьте следующий HTML-код:
<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <title>QR-код генератор</title>
</head>
<body>
    <h1>QR-код генератор</h1>
    <form method="POST">
        <input type="text" name="data" placeholder="Введите текст или URL">
        <button type="submit">Сгенерировать QR-код</button>
    </form>
    {% if qr_code %}
    <img src="{{ qr_code }}" alt="QR-код">
    {% endif %}
</body>
</html>
➡️ Тестирование приложения Запустите приложение командой:
python app.py
Откройте браузер и перейдите по адресу http://127.0.0.1:5000. Вы увидите форму для ввода текста или URL. После ввода данных и нажатия кнопки "Сгенерировать QR-код", вы получите изображение с QR-кодом. Источник: Python Hub - сборище Питонистов 👩‍💻

Python-библиотека `googlesearch`: Google-поиск прямо из питона 🐍 🔎 googlesearch — это простая в использовании библиотека для Python, которая позволяет отправлять запросы в Google и получать ссылки на результаты поиска прямо из вашего кода. Она предоставляет гибкий и мощный интерфейс, который можно настроить для различных задач поиска. Основной функционал Основной метод библиотеки — это функция search(), которая возвращает результаты поиска в виде генератора, содержащего объекты SearchResult или URL-ссылки в зависимости от параметров. Аргументы функции: - term — строка с запросом, которую вы хотите найти в Google. - num_results — количество результатов, которые нужно вернуть (по умолчанию 10). - lang — язык результатов поиска (по умолчанию "en"). - proxy — возможность использования прокси для запросов (по умолчанию None). - advanced — расширенный режим поиска, возвращает объекты с более детализированной информацией, такими как заголовок и описание страницы (по умолчанию False). - sleep_interval — время ожидания между запросами в секундах (по умолчанию 0). - timeout — максимальное время ожидания ответа от Google (по умолчанию 5 секунд). - safe — настройка безопасного поиска: "off" для отключения, "active" для фильтрации контента для взрослых (по умолчанию "active"). - ssl_verify — возможность включить или отключить проверку SSL-сертификатов (по умолчанию None). - region — регион для таргетирования поиска (по умолчанию None). 💻 Примеры использования Простой поиск:
from googlesearch import search

query = "Python best practices"
for result in search(query, num_results=5):
    print(result)
Этот код отправляет запрос "Python best practices" и возвращает первые пять ссылок на результаты поиска. Расширенный поиск с дополнительными параметрами:
for result in search("новости технологий", num_results=3, lang='ru', safe='off', region='RU', advanced=True):
    print(result.title, result.url)
Поиск по русскоязычным ресурсам с отключенным безопасным поиском и указанием региона RU. В данном случае возвращаются не только ссылки, но и заголовки страниц. 🚀 В общем, googlesearch это это мощный инструмент, который позволяет интегрировать Google-поиск в Python-приложения, делая его отличным для автоматизации и поиска данных. Лайк, репост, подписка, все по стандарту, помнишь, да?

Решил добавить еще отдельный видос про Яндекс.👨‍💻🙃 Может кому-то будет полезно. Гоу смотреть👀 https://youtu.be/hDd0p87VZOI