10 наиболее часто задаваемых вопросов о списках Python на Stack Overflow
Список — это встроенная структура данных в Python. Он представлен в виде набора данных в квадратных скобках и может использоваться для хранения данных разных типов.
В этой статье мы рассмотрим 10 наиболее часто задаваемых вопросов о списках Python на Stack Overflow.
Читать
@pro_python_code
Список — это встроенная структура данных в Python. Он представлен в виде набора данных в квадратных скобках и может использоваться для хранения данных разных типов.
В этой статье мы рассмотрим 10 наиболее часто задаваемых вопросов о списках Python на Stack Overflow.
Читать
@pro_python_code
🤓 Как создать Telegram-бота с интеграцией ChatGPT.
1️⃣ Создание чатбота Telegram
• Откройте вашу IDE и создайте файл с именем telegram-bot.py
• Мы будем использовать этот пакет https://github.com/python-telegram-bot/python-telegram-bot, который поможет нам создать telegram-бота. Обязательно установите его с помощью:
• После установки вставьте этот код в файл telegram-bot.py:
Продолжение
@pro_python_code
• Откройте вашу IDE и создайте файл с именем telegram-bot.py
• Мы будем использовать этот пакет https://github.com/python-telegram-bot/python-telegram-bot, который поможет нам создать telegram-бота. Обязательно установите его с помощью:
pip3 install python-telegram-bot
• После установки вставьте этот код в файл telegram-bot.py:
import logging
import os
from telegram import Update
from telegram.ext import (ApplicationBuilder, CommandHandler, ContextTypes,
MessageHandler, filters)
logging.basicConfig(
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
level=logging.INFO
)
TELEGRAM_API_TOKEN = os.getenv("TELEGRAM_API_TOKEN")
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
await context.bot.send_message(chat_id=update.effective_chat.id, text="I'm a bot, please talk to me!")
async def echo(update: Update, context: ContextTypes.DEFAULT_TYPE):
await context.bot.send_message(chat_id=update.effective_chat.id, text=update.message.text)
if __name__ == '__main__':
application = ApplicationBuilder().token(TELEGRAM_API_TOKEN).build()
start_handler = CommandHandler('start', start)
echo_handler = MessageHandler(filters.TEXT & (~filters.COMMAND), echo)
application.add_handler(start_handler)
application.add_handler(echo_handler)
application.run_polling()
Продолжение
@pro_python_code
Please open Telegram to view this post
VIEW IN TELEGRAM
🐍Разработка продвинутого GUI на Python
Сосредоточимся на создании современной среды разработки, отличающейся улучшенным пользовательским интерфейсом с общей оптимизацией дизайна для доступа и использования ее функций.
• Создадим современный GUI с кнопкой для загрузки случайных изображений из рабочего каталога. В качестве основного инструмента разработки GUI будем использовать библиотеку CustomTkinter. С ее помощью создадим рабочий процесс, включая кнопку, метки, изображения и другие необходимые объекты.
• Пакет CustomTkinter устанавливаем с помощью простой команды pip, как показано ниже. Библиотека CustomTkinter доступна на сайте Python Package Index.
• Импорт необходимых библиотек
На этом этапе импортируем все библиотеки, которые понадобятся для создания продвинутого GUI:
- Библиотеку CustomTkinter, только что установленную с помощью команды pip.
- Библиотеку Tkinter, которую можно использовать одновременно с модулем CustomTkinter, поскольку некоторые функции являются производными друг от друга.
- Библиотеку Pillow, которая является одной из лучших библиотек Python для обработки различных типов задач, связанных с изображениями. Из библиотеки Pillow импортируем классы ImageTk и Image, что позволит обрабатывать задачи внутри GUI.
• Установка темы и создание фона интерфейса и последующие шаги
@pro_python_code
Сосредоточимся на создании современной среды разработки, отличающейся улучшенным пользовательским интерфейсом с общей оптимизацией дизайна для доступа и использования ее функций.
• Создадим современный GUI с кнопкой для загрузки случайных изображений из рабочего каталога. В качестве основного инструмента разработки GUI будем использовать библиотеку CustomTkinter. С ее помощью создадим рабочий процесс, включая кнопку, метки, изображения и другие необходимые объекты.
• Пакет CustomTkinter устанавливаем с помощью простой команды pip, как показано ниже. Библиотека CustomTkinter доступна на сайте Python Package Index.
PIP INSTALL CUSTOMTKINTER
• Импорт необходимых библиотек
На этом этапе импортируем все библиотеки, которые понадобятся для создания продвинутого GUI:
- Библиотеку CustomTkinter, только что установленную с помощью команды pip.
- Библиотеку Tkinter, которую можно использовать одновременно с модулем CustomTkinter, поскольку некоторые функции являются производными друг от друга.
- Библиотеку Pillow, которая является одной из лучших библиотек Python для обработки различных типов задач, связанных с изображениями. Из библиотеки Pillow импортируем классы ImageTk и Image, что позволит обрабатывать задачи внутри GUI.
# Импортирование библиотеки CustomTkinter для создания продвинутого GUI.
import tkinter
from PIL import ImageTk, Image
• Установка темы и создание фона интерфейса и последующие шаги
@pro_python_code
❓Почему len(list) имеет временную сложность O(1)?
Я столкнулся с простой задачей поиска дубликатов в списке, и хотя решений было много (оптимизированных и неоптимизированных), два из них привлекли мое внимание.
• Первое заключалось в итерации по списку с добавлением каждого элемента в набор. Перед добавлением проверялось, присутствует ли уже данный элемент в наборе, и если да, то получался ответ.
Конечно, при таком решении мы должны были выполнять итерацию по списку, и в худшем случае пришлось бы просматривать весь список.
Тогда наше решение будет зависеть от размера списка: O(n). n – количество элементов в списке.
• В другом решении мы просто сравниваем длину множества списка и длину списка.
Учитывая природу множества, которое не может содержать дубликатов, это было бы простым решением. Нам необходимо обратить внимание на функцию len(), которая использовалась для определения длины списка. Эта встроенная функция не зависит от размера списка. Независимо от того, содержит ли ваш список 1 элемент или 1000, согласно стандартной реализации Python (CPython), временная сложность равна O(1).
За счет чего это возможно?
Читать
@pro_python_code
Я столкнулся с простой задачей поиска дубликатов в списке, и хотя решений было много (оптимизированных и неоптимизированных), два из них привлекли мое внимание.
• Первое заключалось в итерации по списку с добавлением каждого элемента в набор. Перед добавлением проверялось, присутствует ли уже данный элемент в наборе, и если да, то получался ответ.
Конечно, при таком решении мы должны были выполнять итерацию по списку, и в худшем случае пришлось бы просматривать весь список.
def containsDuplicate(self, nums):
"""
:type nums: List[int]
:rtype: bool
"""
uniqueSet = set()
for i in nums:
if i in uniqueSet:
return True
else:
uniqueSet.add(i)
return False
Тогда наше решение будет зависеть от размера списка: O(n). n – количество элементов в списке.
• В другом решении мы просто сравниваем длину множества списка и длину списка.
len(set(list_name)) == len(list_name)
Учитывая природу множества, которое не может содержать дубликатов, это было бы простым решением. Нам необходимо обратить внимание на функцию len(), которая использовалась для определения длины списка. Эта встроенная функция не зависит от размера списка. Независимо от того, содержит ли ваш список 1 элемент или 1000, согласно стандартной реализации Python (CPython), временная сложность равна O(1).
За счет чего это возможно?
Читать
@pro_python_code
1. Списковое включение
Когда требуется создать новый список на основе значений существующего списка, cписковое включение обеспечивает более понятный и читаемый синтаксис. Это позволяет сделать код более читабельным и эффективным. (изображение 1.)
2. Enumerate
Когда нам нужны одновременно и индекс, и значение элементов списка, можно не создавать отдельную переменную, а воспользоваться функцией enumerate(). (изображение 2.)
3. Использование else в цикле
В Python else может использоваться вместе с циклами. Код в блоке else выполняется после завершения цикла, если только цикл не завершен оператором break. (изображение 3.)
4. Использование множеств
Множества в Python реализованы в виде хэш-таблиц, которые обеспечивают постоянную сложность тестирования принадлежности. Если необходимо проверить, существует ли элемент в большой коллекции элементов, использование множества вместо списка может быть выгодным. (изображение 4.)
5. Использование *args и **kwargs
Функции *args и **kwargs позволяют принимать переменное количество аргументов. При этом *args используется для передачи аргументов, не относящихся к ключевым словам, а **kwargs – для передачи аргументов, относящихся к ключевым словам. (изображение 5.)
📌 Далее в статье
@pro_python_code
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
latexify
Пакет Python, который генерирует математическое описание LaTeX из функций Python
https://github.com/google/latexify_py
@pro_python_code
Пакет Python, который генерирует математическое описание LaTeX из функций Python
https://github.com/google/latexify_py
@pro_python_code
⏳Как узнать длительность выполнения кода в языке Python?
Оценка времени выполнения кода важна при разработке программного обеспечения. Для этого можно использовать модули.
🔵 Модуль time в Python, который предоставляет функции для работы со временем. Одна из таких функций - time.time(), которая возвращает количество секунд, прошедших с начала эпохи. Ее можно использовать для измерения времени выполнения определенного участка кода.
🔵 Модуль timeit предназначен специально для измерения времени выполнения небольших фрагментов кода. Он предоставляет функцию timeit(), которая автоматически повторяет выполнение кода несколько раз и возвращает среднее время выполнения:
🔵 Модуль line_profiler предоставляет декоратор @profile, который можно использовать для профилирования кода и измерения выполнения каждой строки. Чтобы использовать этот декоратор, необходимо установить line_profiler с помощью pip install line_profiler:
✅ Измерение времени выполнения влияет на выполнение программы, поэтому его следует использовать только для профилирования и оптимизации кода, а не включать в окончательную версию программы. Это позволит оценить производительность кода и найти места для оптимизации в целях улучшения скорости выполнения.
@pro_python_code
Оценка времени выполнения кода важна при разработке программного обеспечения. Для этого можно использовать модули.
import time
start_time = time.time()
# Ваш код, время выполнения которого нужно измерить
end_time = time.time()
execution_time = end_time - start_time
print(f"Время выполнения: {execution_time} секунд")
import timeit
code_to_test = """
# Код, время выполнения которого нужно измерить
"""
execution_time = timeit.timeit(code_to_test, number=1000)
print(f"Среднее время выполнения: {execution_time} секунд")
import line_profiler
@profile
def your_function():
# Ваш код, время выполнения которого нужно измерить
pass
your_function()
@pro_python_code
Please open Telegram to view this post
VIEW IN TELEGRAM
Собрание бесплатных курсов по Python и машинному обучению.
1. Основы Python для анализа данных — программирование на Python.
2. Ускоренный курс по машинному обучению — видеолекции от исследователей Google.
3. Основы R — как обрабатывать, анализировать и визуализировать данные.
4. Введение в Data Science и аналитику — основы Data Science и Data Science Life Cycle.
5. Линейная регрессия — как применять R для осуществления линейной регрессии.
6. Визуализация — принципы визуализации данных и применение ggplot2.
7. Введение CS50 в программирование на Python, май 2023 г.
8. Python для всех: Getting Started with Python от Coursera, этот курс для начинающих знакомит с программированием на Python через пошаговые учебные пособия и практические упражнения. Курс ведет известный преподаватель доктор Чарльз Северанс.
@pro_python_code
1. Основы Python для анализа данных — программирование на Python.
2. Ускоренный курс по машинному обучению — видеолекции от исследователей Google.
3. Основы R — как обрабатывать, анализировать и визуализировать данные.
4. Введение в Data Science и аналитику — основы Data Science и Data Science Life Cycle.
5. Линейная регрессия — как применять R для осуществления линейной регрессии.
6. Визуализация — принципы визуализации данных и применение ggplot2.
7. Введение CS50 в программирование на Python, май 2023 г.
8. Python для всех: Getting Started with Python от Coursera, этот курс для начинающих знакомит с программированием на Python через пошаговые учебные пособия и практические упражнения. Курс ведет известный преподаватель доктор Чарльз Северанс.
@pro_python_code
Небольшой скрипт на Python 3, который проверит доступность подключения к серверу баз данных PostgreSQL на веб-сервере.
В первую очередь необходимо проверить наличие коннектора Python к СУБД PostgreSQL psycopg2.
Затем на сервере БД создадим пользователя
db_user
и базу данных test_db
Для этого войдёт в консоль psql от пользователя postgres
# su postgres -c psql
и запустим такие SQL-команды:
CREATE USER db_user WITH PASSWORD 'yourPassword';
CREATE DATABASE test_db OWNER db_user;
Затем в каталоге веб-сервера, где хранятся скрипты Python, создадим файл dbconnection.py (и не забываем про chmod 755 !!!) со следующим содержимым:
#!/usr/bin/python3
print('Content-Type: text/html; charset=utf-8 \r\n')
print('<h1>Подключение к БД PostgreSQL</h1>')
import psycopg2 as pgsql
from psycopg2 import OperationalError
try:
connection = pgsql.connect(database='test_db', user='db_user', password='yourPassword', host='localhost', port='5432')
print('<h2>Подключение к базе данных выполнено успешно</h2>')
connection.close()
except OperationalError as error:
print(f'<h2>Ошибка подключения к БД: {error} </h2>')
Проверяем. Запускаем браузер, вводим адрес веб-сервера и путь к скриптам и дописываем после слеша dbconnection.py:
http://IP_или_имя_хоста/scripts/dbconnection.py
В браузере мы должны будем увидеть такую строчку:
Подключение к БД прошло успешно.
@pro_python_code
Please open Telegram to view this post
VIEW IN TELEGRAM
🌐Модуль прогнозирования погоды
• Импорт необходимых библиотек
• Чтение CSV-файла
• Форма данных
(1461, 6)
📌Продолжение
@pro_python_code
• Импорт необходимых библиотек
import matplotlib.pyplot as plt
import seaborn as sns
import scipy
import re
import missingno as mso
from scipy import stats
from scipy.stats import ttest_ind
from scipy.stats import pearsonr
from sklearn.preprocessing import StandardScaler,LabelEncoder
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.svm import SVC
from sklearn.ensemble import GradientBoostingClassifier
from xgboost import XGBClassifier
from sklearn.metrics import accuracy_score,confusion_matrix,classification_report
import pandas as pd
• Чтение CSV-файла
data=pd.read_csv("/content/seattle-weather.csv")
data.head()
• Форма данных
data.shape
(1461, 6)
import warnings
warnings.filterwarnings('ignore')
sns.countplot("weather",data=data,palette='hls')
📌Продолжение
@pro_python_code
This media is not supported in your browser
VIEW IN TELEGRAM
🧰X-OSINT: инструмент OSINT “все в одном”.
X-OSINT представляет собой систему разведки с открытым исходным кодом (OSINT), служащую ценным инструментом для сбора точной информации о телефонных номерах и адресах электронной почты пользователей.
Требования и процесс установки
🟢 Python 3
🟢 модуль pip
🟢 Стабильное подключение к Интернету
🟢 Различные пакеты python (будут установлены автоматически в процессе установки)
Процесс установки
1) Клонирование репозитория инструментов выполняется следующим образом
git clone https://github.com/TermuxHackz/X-osint/tree/master
2) После клонирования репозитория перейдите в только что клонированный каталог и измените права доступа, предоставив полный доступ к инструменту.
3) После этого приступайте к запуску скрипта.
cd X-osint
chmod +x *
bash setup.sh
4) После выполнения скрипта он предложит выбрать один из двух терминалов для установки различных других пакетов. (Для данного примера выбран Linux)
▪Продолжение
▪Github
@pro_python_code
X-OSINT представляет собой систему разведки с открытым исходным кодом (OSINT), служащую ценным инструментом для сбора точной информации о телефонных номерах и адресах электронной почты пользователей.
Требования и процесс установки
Процесс установки
1) Клонирование репозитория инструментов выполняется следующим образом
git clone https://github.com/TermuxHackz/X-osint/tree/master
2) После клонирования репозитория перейдите в только что клонированный каталог и измените права доступа, предоставив полный доступ к инструменту.
3) После этого приступайте к запуску скрипта.
cd X-osint
chmod +x *
bash setup.sh
4) После выполнения скрипта он предложит выбрать один из двух терминалов для установки различных других пакетов. (Для данного примера выбран Linux)
▪Продолжение
▪Github
@pro_python_code
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Секрет 1. ELSE в циклах FOR и WHILE
Когда мы начинаем программировать, одним из первых знакомств являются условные операторы (if-else). Они позволяют изменять поток кода в зависимости от значения определенной переменной. В блоке if проверяется логическое условие, и если оно не выполняется, выполняется код, определенный в блоке else.
Это может быть полезно, например, если у нас есть список чисел и мы хотим написать логику, которая определяет, является ли любое из чисел в списке четным:
# определяем список чисел
numbers: list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# также определяем переменную-флаг, которая укажет, было ли найдено четное число
found_even: bool = False
for num in numbers:
# если остаток после деления на 2 равен 0, то число четное
if num % 2 == 0:
print(f"{num} is even")
# устанавливаем флаг в True, потому что нашли четное число
found_even = True
# мы можем остановить выполнение, потому что нашли четное число
break
# если значение флага False, то четных чисел не найдено
if not found_even:
print("No even numbers found")
Вышеприведенное можно записать следующим образом:
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for num in numbers:
if num % 2 == 0:
print(f"{num} is even")
break
else:
print("No even numbers found")
Секрет 2. Оператор walrus
Рассмотрим следующий пример. Нам необходимо реализовать логику, которая генерирует последовательность случайных чисел до тех пор, пока не будет сгенерировано определенное число.
import random
rand = None
while True:
# генерация случайного числа от 1 до 100
rand = random.randint(1, 100)
# если случайное число равно 10, прервать выполнение
if rand != 10:
print(rand)
else:
break
# это будет выполнено только в том случае, если мы получим 10 и прервем цикл
print("We got a 10!")
Генерируем в цикле случайное число и сохраняем его в переменной rand. Количество итераций зависит от значения переменной rand. Чем быстрее rand станет равным 10, тем быстрее прервем цикл.
import random
while (rand := random.randint(1, 100)) != 10:
print(rand)
print("We got a 10!")
Здесь сообщаем Python, что хотим, чтобы цикл while выполнялся до тех пор, пока значение rand не станет равно 10. Кроме того, сообщаем ему, что rand будет получать свое значение из random.randint(1, 100) с каждой новой итерацией.
@pro_python_code
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
⌨️Выбор правильного фреймворка Python: Django vs. Flask vs. FastAPI vs. AIOHTTP
Сравним четыре популярных веб-фреймворка на Python: Django, Flask, FastAPI и AIOHTTP.
Django: Полнофункциональный веб-фреймворк
Django – это высокоуровневый, полнофункциональный веб-фреймворк, придерживающийся философии “батарейки в комплекте”. Его надежная экосистема и следование принципу “не повторяйся” (DRY) делают его идеальным решением для сложных приложений и масштабных проектов.
Примеры использования
• Системы управления контентом (CMS): встроенный интерфейс администратора и ORM (Object-Relational Mapping) делают Django отличным выбором для создания многофункциональных CMS-платформ.
• Приложения для социальных сетей: Система аутентификации и управление пользователями Django упрощают разработку платформ для социальных сетей.
• Веб-сайты электронной коммерции: Поддержка Django для миграции баз данных и такие функции безопасности, как защита от CSRF и clickjacking, хорошо подходят для приложений электронной коммерции.
Instagram – это платформа для обмена фотографиями, созданная на основе Django. Она продемонстрировала способность работать с большими базами пользователей и сложными функциональными возможностями.
Образец кода
Следующий код определяет простую функцию представления hello_view, которая возвращает JsonResponse при обращении к ней по URL. Чтобы использовать эту функцию в проекте Django, необходимо зарегистрировать URL, как показано во втором блоке кода.
Flask: легкий микрофреймворк
Flask – это микрофреймворк, в котором приоритет отдается простоте и гибкости, а не встроенной функциональности. Это означает, что разработчики могут выбирать инструменты и расширения по мере необходимости, что делает его идеальным для малых и средних проектов.
Примеры использования
• Прототипирование: Минимальный объем кодового кода Flask делает его отличным выбором для быстрого создания прототипов и разработки пробных версий.
• RESTful API: Легкий дизайн Flask и широкая поддержка таких расширений, как Flask-RESTful, позволяют разработчикам создавать эффективные REST API.
• Одностраничные приложения (SPA): Flask может выступать в качестве бэкенда для SPA, используя преимущества своей простоты и легкой интеграции с фреймворками фронтенда.
Pinterest, популярная платформа для поиска контента, использует Flask для эффективной работы с бэкэнд-операциями, демонстрируя способность к масштабированию и оптимизации производительности.
Образец кода
Приведенный ниже код на языке Python является примером веб-приложения, созданного с использованием Flask. В нем создается экземпляр класса Flask и определяется маршрут с именем “hello”. При обращении к маршруту “hello” с помощью GET-запроса приложение возвращает JSON-ответ с парой ключ-значение “message” и “Hello, Flask!”.
📌 Читать про остальные
@pro_python_code
Сравним четыре популярных веб-фреймворка на Python: Django, Flask, FastAPI и AIOHTTP.
Django: Полнофункциональный веб-фреймворк
Django – это высокоуровневый, полнофункциональный веб-фреймворк, придерживающийся философии “батарейки в комплекте”. Его надежная экосистема и следование принципу “не повторяйся” (DRY) делают его идеальным решением для сложных приложений и масштабных проектов.
Примеры использования
• Системы управления контентом (CMS): встроенный интерфейс администратора и ORM (Object-Relational Mapping) делают Django отличным выбором для создания многофункциональных CMS-платформ.
• Приложения для социальных сетей: Система аутентификации и управление пользователями Django упрощают разработку платформ для социальных сетей.
• Веб-сайты электронной коммерции: Поддержка Django для миграции баз данных и такие функции безопасности, как защита от CSRF и clickjacking, хорошо подходят для приложений электронной коммерции.
Instagram – это платформа для обмена фотографиями, созданная на основе Django. Она продемонстрировала способность работать с большими базами пользователей и сложными функциональными возможностями.
Образец кода
Следующий код определяет простую функцию представления hello_view, которая возвращает JsonResponse при обращении к ней по URL. Чтобы использовать эту функцию в проекте Django, необходимо зарегистрировать URL, как показано во втором блоке кода.
# File: views.py
from django.http import JsonResponse
def hello_view(request):
return JsonResponse({"message": "Hello, Django!"})
# File: myproject/urls.py
from django.urls import path
from myapp.views import hello_view
urlpatterns = [
path('hello/', hello_view, name='hello'),
]
Flask: легкий микрофреймворк
Flask – это микрофреймворк, в котором приоритет отдается простоте и гибкости, а не встроенной функциональности. Это означает, что разработчики могут выбирать инструменты и расширения по мере необходимости, что делает его идеальным для малых и средних проектов.
Примеры использования
• Прототипирование: Минимальный объем кодового кода Flask делает его отличным выбором для быстрого создания прототипов и разработки пробных версий.
• RESTful API: Легкий дизайн Flask и широкая поддержка таких расширений, как Flask-RESTful, позволяют разработчикам создавать эффективные REST API.
• Одностраничные приложения (SPA): Flask может выступать в качестве бэкенда для SPA, используя преимущества своей простоты и легкой интеграции с фреймворками фронтенда.
Pinterest, популярная платформа для поиска контента, использует Flask для эффективной работы с бэкэнд-операциями, демонстрируя способность к масштабированию и оптимизации производительности.
Образец кода
Приведенный ниже код на языке Python является примером веб-приложения, созданного с использованием Flask. В нем создается экземпляр класса Flask и определяется маршрут с именем “hello”. При обращении к маршруту “hello” с помощью GET-запроса приложение возвращает JSON-ответ с парой ключ-значение “message” и “Hello, Flask!”.
# File: app.py
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/hello', methods=['GET'])
def hello():
return jsonify({"message": "Hello, Flask!"})
📌 Читать про остальные
@pro_python_code
Solara
Не так давно был представлен фреймворк Solara, предназначенный для создания веб-приложений на чистом Python. В его документации содержатся интересные улучшения Streamlit. К ним относятся вложенные переиспользуемые компоненты с собственными состояниями, не требующие повторного выполнения без необходимости, а также простая интеграция с Jupyter Notebook.
Протестируем данный фреймворк.
• Для этого создадим что-нибудь одновременно простое, но при этом достаточно сложное, чтобы проверить его возможности, а именно приложение-планировщик задач todo app. Я уже проводил подобный эксперимент с Shiny для Python, теперь настала очередь Solara. *В изображении итог.
Написание кода в Solara
Во-первых, фреймворк является совершенно новым, и сложно предсказать возможные изменения по мере его развития. Кроме того, я не претендую на звание эксперта Solara.
Начнем с определения глобальных переменных:
import solara
text_input = solara.reactive("")
todos = solara.reactive([
{ "text": solara.reactive("Learn Solara"), "done": solara.reactive(False) },
{ "text": solara.reactive("Build a Solara app"), "done": solara.reactive(False) }
])
Page()
Затем определяем основной компонент с именем Page:
@solara.component
def Page():
# добавление css
solara.Style("""
.add-button {
margin-right: 10px;
}
""")
# центрирование карты
with solara.Column(align="center"):
with solara.Card(title="Todo App"):
for todo in todos.value:
Todo(todo)
if len(todos.value) == 0:
solara.Text("No todos yet.")
solara.InputText(label="Add a todo", value=text_input),
solara.Button("Add", on_click=on_add_todo, classes=["primary", "add-button"]),
solara.Button("Remove finished tasks", classes=["secondary"], on_click=clear_finished_todos),
Page()
Рассмотрим код шаг за шагом.
Читать
@pro_python_code
Please open Telegram to view this post
VIEW IN TELEGRAM
Лучший способ получать свежие обновлении и следить за трендами в разработке.
Машинное обучение: t.me/ai_machinelearning_big_data
Python: t.me/pythonl
C#: t.me/csharp_ci
C/C++/ t.me/cpluspluc
Data Science: t.me/data_analysis_ml
Devops: t.me/devOPSitsec
Go: t.me/Golang_google
Базы данных: t.me/sqlhub
Rust: t.me/rust_code
Javascript: t.me/javascriptv
React: t.me/react_tg
PHP: t.me/phpshka
Android: t.me/android_its
Мобильная разработка: t.me/mobdevelop
Linux: t.me/+A8jY79rcyKJlYWY6
Big Data: t.me/bigdatai
Хакинг: t.me/linuxkalii
Тестирование: https://yangx.top/+F9jPLmMFqq1kNTMy
Java: t.me/javatg
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка машинное обучение: https://yangx.top/addlist/_FjtIq8qMhU0NTYy
🇬🇧Английский: t.me/english_forprogrammers
Please open Telegram to view this post
VIEW IN TELEGRAM