Русский
Открыть в Telegram
6 535подписчиков−43 за неделю
637средний охват поста
9.8%ER — охват к подписчикам
6постов за 30 дней
P
Pythoner
Фотография
Python keywords - это зарезервированные слова в языке программирования Python, которые имеют специальное значение и не могут быть использованы в качестве идентификаторов (названий переменных, функций и т.д.) в программах. 🐍Pythoner
21 · 1.9K ·
Pythoner
Фотография
✈️Множество в Python - это неупорядоченная коллекция уникальных элементов. Представьте себе мешок с разноцветными шариками, где каждый цвет встречается только один раз. Вот это и есть множество! ➡️Создать множество очень просто: colors = {"red", "blue", "green"} print(colors) # Вывод: {'blue', 'green', 'red'} Заметили, что порядок элементов изменился? Это нормально для множеств - они не сохраняют порядок. ➡️Давайте рассмотрим самые полезные методы для работы с множествами. ➡️1. add() - Добавление элемента Метод add() позволяет добавить новый элемент в множество. Если элемент уже существует, ничего не произойдет. fruits = {"apple", "banana", "cherry"} fruits.add("orange") print(fruits) # Вывод: {'apple', 'banana', 'cherry', 'orange'} fruits.add("apple") # Ничего не изменится print(fruits) # Вывод: {'apple', 'banana', 'cherry', 'orange'} ➡️2. remove() и discard() - Удаление элементов Оба метода удаляют элемент из множества, но есть важное различие: 💬remove() вызовет ошибку, если элемента нет в множестве 💬discard() просто ничего не сделает, если элемента нет numbers = {1, 2, 3, 4, 5} numbers.remove(3) print(numbers) # Вывод: {1, 2, 4, 5} numbers.discard(10) # Ничего не произойдет print(numbers) # Вывод: {1, 2, 4, 5} numbers.remove(10) # Вызовет ошибку KeyError ➡️3. union() - Объединение множеств Метод union() объединяет два или более множеств. Это как смешать шарики из разных мешков в один большой мешок! set1 = {1, 2, 3} set2 = {3, 4, 5} set3 = set1.union(set2) print(set3) # Вывод: {1, 2, 3, 4, 5} ➡️4. intersection() - Пересечение множеств Этот метод находит общие элементы между множествами. Представьте, что вы ищете друзей, которые любят и пиццу, и мороженое! pizza_lovers = {"Алиса", "Боб", "Чарли", "Дэвид"} ice_cream_lovers = {"Боб", "Чарли", "Ева", "Фрэнк"} pizza_and_ice_cream = pizza_lovers.intersection(ice_cream_lovers) print(pizza_and_ice_cream) # Вывод: {'Боб', 'Чарли'} ➡️5. difference() - Разность множеств Метод difference() возвращае… Читать полностью →
29 · 1.9K ·
Pythoner
Фотография
✈️composio-core - это мощная библиотека для Python, предназначенная для упрощения процесса композиции и декомпозиции сложных объектов. Она предоставляет элегантный и интуитивно понятный API, который позволяет разработчикам легко создавать, модифицировать и анализировать сложные структуры данных. ➡️Установка composio-core Установить библиотеку composio-core очень просто. Вы можете использовать pip, стандартный менеджер пакетов Python. Вот команда для установки: pip install composio-core ➡️Основные возможности 💬Гибкая система композиции объектов 💬Мощные инструменты для декомпозиции и анализа 💬Поддержка асинхронных операций 💬Интеграция с популярными фреймворками 💬Расширяемая архитектура плагинов ➡️Пример использования Давайте рассмотрим простой пример использования composio-core для создания и анализа сложного объекта: from composio_core import Composer, Analyzer # Создаем композицию composer = Composer() complex_object = composer.create({ "name": "Проект X", "components": [ {"type": "module", "name": "Auth", "version": "1.2.0"}, {"type": "database", "name": "UserDB", "engine": "PostgreSQL"}, {"type": "service", "name": "EmailNotifier", "protocol": "SMTP"} ] }) # Анализируем созданный объект analyzer = Analyzer() analysis_result = analyzer.analyze(complex_object) print(analysis_result.summary()) print(f"Количество компонентов: {analysis_result.component_count}") print(f"Типы компонентов: {', '.join(analysis_result.component_types)}") ⬆️В этом примере мы создали сложный объект, представляющий структуру проекта, а затем проанализировали его с помощью инструментов composio-core. ➡️Преимущества использования composio-core 💬1. Повышение читаемости кода Благодаря четкой структуре и интуитивно понятному API, код, использующий composio-core, становится более читаемым и понятным. Это особенно важно при работе в команде или при поддержке долгосрочных проектов. 💬2. Ускорение разработки Библиотека предоставляет множество готовых ин… Читать полностью →
18 · 1.8K ·
P
Фотография
✈️Typer — это библиотека для создания командных интерфейсов приложений на Python. Она позволяет легко создавать CLI приложения с поддержкой аргументов, опций, субкоманд и автоматической генерацией help. ➡️Основные возможности Typer: 💬Декоратор @typer.command() для определения команд и подкоманд. 💬Автоматический парсинг аргументов и опций. 💬Валидация и tipped annotations для аргументов и опций. 💬Автоматическая генерация help с описаниями. 💬Встроенная поддержка Click для обратной совместимости. ➡️Пример: import typer app = typer.Typer() @app.command() def hello(name: str): # Приветствие пользователя print(f"Hello {name}") @app.command() def goodbye(name: str, formal: bool = False): # Прощание с пользователем if formal: print(f"Goodbye Ms./Mr. {name}. Have a good day.") else: print(f"Bye {name}!") if __name__ == "__main__": app() 🔎Typer часто используется для создания утилит командной строки, CLI интерфейсов для python приложений, API клиентов, DevOps инструментов и других задач, где нужен простой и удобный интерфейс командной строки. 🐍Pythoner
24 · 2.1K ·
P
🐍Разбор С 3.6 версии допускаются разделители в виде _ для повышения читаемости чисел. Функция float ожидает строку и игнорирует _. На более старших версиях будет ошибка
3 · 2.1K ·
P
Pythoner
Фотография
➡️Настройка четверга среды Шаг 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-кодом. 🐍Pythoner
37 · 1.9K ·
P
Pythoner
Фотография
➡️Что такое веб-приложение? Веб-приложение - это программное обеспечение, которое работает в веб-браузере. Основные характеристики веб-приложений включают: 💬Независимость от платформы 💬Работа на любом устройстве, включая мобильные 💬Зависимость от интернет-соединения (как минимум для начальной загрузки) 💬Динамический контент с частыми обновлениями ➡️Технологии, лежащие в основе веб-приложений Веб-приложения создаются с использованием различных технологий: 💬Фронтенд: HTML, CSS и JavaScript 💬Бэкенд: Node.js, Python (с Django или Flask), Java и другие 💬Базы данных: SQL и NoSQL варианты (например, MongoDB, PostgreSQL) ➡️Примеры веб-приложений Многие популярные сервисы, которые мы используем ежедневно, являются веб-приложениями: 💬Gmail 💬Google Документы 💬Trello 💬Slack 💬Онлайн-банкинг ➡️Безопасность в веб-приложениях Веб-приложения имеют преимущество в виде встроенных функций безопасности, таких как HTTPS для шифрования передаваемых данных. Это освобождает разработчиков от необходимости создавать меры безопасности с нуля. ➡️Время загрузки веб-приложений Типичное время загрузки веб-приложений: 💬Первая загрузка: около 7-8 секунд 💬Последующие загрузки: около 1 секунды (благодаря кэшированию) ➡️Гибридный подход Многие компании используют гибридный подход: 💬Веб-сайт для презентации и продажи идеи (оптимизирован для SEO) 💬Веб-приложение для основного продукта (оптимизировано для удобства пользователей) ➡️Почему веб-приложения важны? Веб-приложения имеют ряд преимуществ, которые делают их важными в современном мире: 💬Доступность с любого устройства с браузером 💬Не требуют установки и обновления на устройстве пользователя 💬Легко обновляются и поддерживаются разработчиками 💬Обеспечивают единообразный пользовательский опыт на разных платформах 🐍Pythoner
20 · 1.7K ·
Pythoner
Фотография
✈️Добавление поддержки нескольких языков в Django может быть сложной задачей для новичков. В этом посте мы рассмотрим пошаговый процесс реализации многоязычности в вашем Django-проекте. ➡️Настройка проекта Если у вас еще нет готового проекта Django, вы можете создать новый, выполнив следующие шаги: virtualenv .env source .env/bin/activate pip install django django-admin startproject languages cd languages python manage.py migrate ➡️Включение i18n и l10n Убедитесь, что в вашем файле [settings.py](http://settings.py) включены следующие настройки: USE_I18N = True USE_L10N = True ➡️Перевод в шаблонах Для перевода текста в шаблонах используйте тег {% trans %}: {% load i18n %} {% trans "Hello world! This is an HTML5 Boilerplate." %} ➡️Перевод в представлениях Для перевода текста в представлениях используйте функцию gettext: from django.utils.translation import gettext as _ def index(request): text = _("this is some random text") return render(request, 'home.html', {'text': text}) ➡️Создание файлов перевода Создайте каталог для хранения переводов и выполните команду для создания файлов перевода: mkdir -p locale django-admin makemessages --ignore="static" --ignore=".env" -l nl ➡️Редактирование файлов перевода Отредактируйте файл django.po в созданном каталоге locale, добавив переводы для каждой строки: #: home/templates/home.html:19 msgid "Hello world! This is an HTML5 Boilerplate." msgstr "Hallo wereld! Dit is een HTML5 Boilerplate." ➡️Компиляция файлов перевода После редактирования файлов перевода, скомпилируйте их: django-admin compilemessages ➡️Настройка языка на основе пользовательских предпочтений Добавьте поле для выбора языка в модель пользователя: 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.use… Читать полностью →
26 · 1.9K ·
P
Pythoner
Фотография
✈️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') ➡️Добавление функциональности Вы можете расширить функциональность вашего приложения для рисования, добавив следующие возможности: 💬Выбор цвета кисти 💬Изменение размера кисти 💬Очистка холста 💬Сохранение рисунка 🐍Pythoner
26 · 1.8K ·
🐍Разбор Метод find() возвращает индекс первого вхождения указанного символа или подстроки в строке. Если символ или подстрока не найдены, метод find() возвращает -1 Регистр тоже играет важную роль! Помни, что "a" - это не то же самое что "A"
2 · 2.2K ·
Сделали для подписчиков наших каналов по Python небольшой розыгрыш звёзд😘 1 ноября в 18 часов по мск, 5 победителей получат по 100 звёзд, которые можно тратить в нашем и других каналах, дарить подарки и другое, удачи! P.S. говорят если переслать этот розыгрыш друзьям, то шанс увеличится.
1 · 3.3K ·
P
Pythoner
Фотография
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. 🐍Pythoner
23 · 2K ·
P
Фотография
✈️Хэш-функции играют важную роль в компьютерных науках, особенно в структурах данных и криптографии. В этой статье мы рассмотрим различные типы хэш-функций, реализованные на Python, и проанализируем их характеристики. 🔎 Типы хэш-функций ➡️1. Простая хэш-функция (simple_hash) Эта функция суммирует ASCII-значения символов входной строки и применяет операцию модуля. Она проста в реализации, но может привести к неравномерному распределению. def simple_hash(input_str, table_size): hash_value = 0 for char in input_str: hash_value += ord(char) return hash_value % table_size ➡️2. Полиномиальный хэш (polynomial_hash) Использует полиномиальное накопление ASCII-значений с простым числом, что позволяет придать больший вес символам в начале строки. def polynomial_hash(input_str, table_size, prime=31): hash_value = 0 for i, char in enumerate(input_str): hash_value += ord(char) * (prime ** i) return hash_value % table_size ➡️3. FNV-1a хэш (fnv1a_hash) 32-битная версия FNV-1a хэша, известная своими хорошими характеристиками распределения. def fnv1a_hash(key, table_size): FNV_prime = 16777619 FNV_offset_basis = 2166136261 hash_value = FNV_offset_basis for char in key: hash_value ^= ord(char) hash_value *= FNV_prime hash_value &= 0xffffffff # Обеспечивает 32-битный хэш return hash_value % table_size ➡️4. XXХэш (xx_hash) Использует библиотеку xxhash для быстрого некриптографического хэширования, эффективного для больших объемов данных. def xx_hash(input_str, table_size): return xxhash.xxh32(input_str).intdigest() % table_size ➡️5. SipHash (sip_hash) Применяет HMAC с SHA-256 для повышенной безопасности, но может быть медленнее некриптографических хэшей. def sip_hash(input_str, table_size, key=b'secretkey'): hash_value = hmac.new(key, input_str.encode(), digestmod='sha256').hexdigest() return int(hash_value, 16) % table_size ➡️6. MurmurHash (murmur_hash) Быстрая некриптогра… Читать полностью →
31 · 2.1K ·
P
Pythoner
Фотография
✈️А в этой части рассмотрим тестирование хэш-функций ➡️Генерация тестовых данных Для тестирования используется функция generate_random_strings, которая создает случайные строки заданной длины. ➡️Анализ распределения и коллизий Функция test_distribution_and_collisions оценивает качество распределения элементов по хэш-таблице и подсчитывает количество коллизий. ➡️Измерение времени выполнения Функция test_execution_time измеряет время, необходимое для хэширования набора элементов, что позволяет сравнить производительность разных хэш-функций. ➡️Проверка чувствительности Функция test_sensitivity проверяет, насколько хэш-функция чувствительна к небольшим изменениям во входных данных. ➡️Заключение Выбор подходящей хэш-функции зависит от конкретных требований приложения. Простые хэш-функции могут быть достаточными для небольших наборов данных, в то время как для больших объемов данных или повышенных требований к безопасности могут потребоваться более сложные алгоритмы. Важно учитывать баланс между скоростью выполнения, качеством распределения и устойчивостью к коллизиям при выборе хэш-функции для конкретной задачи. 🐍Pythoner
14 · 2.1K ·
P
Pythoner
Фотография
Куча (heap) - это элегантная структура данных, которая часто используется для реализации приоритетной очереди. В то время как приоритетная очередь - это абстрактная структура данных, определяющая поведение и интерфейс, куча - это конкретная реализация, определяющая, как эта структура работает. ➡️Основные операции Реализация приоритетной очереди обычно предоставляет следующие методы: 💬Вставить(H, x): вставить элемент x в приоритетную очередь H 💬Find(H): вернуть элемент с наивысшим приоритетом в очереди H 💬Delete(H): удалить элемент с наименьшим (или наибольшим) значением в очереди H ➡️Бинарная куча В этой статье мы сосредоточимся на реализации бинарной кучи (Binary Heap), где каждый узел может иметь максимум двух потомков. В min-heap родительский узел всегда имеет меньшее значение, чем его потомки, а в max-heap - большее. ➡️Представление данных Куча может быть представлена в виде массива, где позиции левого и правого потомков можно вычислить с помощью простых формул. Для элемента с индексом k: 💬Индекс левого потомка: 2*k + 1 💬Индекс правого потомка: 2*k + 2 💬Индекс родителя: (k - 1) // 2 ➡️Применение, кучи находят широкое применение в различных алгоритмах и реальных сценариях: 💬Сортировка: пирамидальная сортировка (Heapsort) имеет временную сложность O(n log n) в худшем случае 💬Алгоритмы поиска на графах: A* и алгоритм Дейкстры используют кучи для хранения пар приоритет-узел 💬Кодирование Хаффмана: кучи применяются для хранения и извлечения деревьев с наименьшей частотой ➡️Реализация в Python В стандартной библиотеке Python API для работы с кучами находится в модуле heapq. Вот пример использования: import heapq unsorted_array = [100, 230, 44, 1, 74, 12013, 84] heapq.heapify(unsorted_array) print(unsorted_array) # [1, 74, 44, 230, 100, 12013, 84] sorted_array = [] for _ in range(len(unsorted_array)): sorted_array.append(heapq.heappop(unsorted_array)) print(sorted_array) # [1, 44, 74, 84, 100, 230, 12013] ➡️Собственная реализация MinHeap Ниже представлен… Читать полностью →
34 · 2.1K ·

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Границы индекса · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем