Содержание

Создание web-приложений на Python. Питон в веб-разработке

Dash — библиотека для языка Python с открытым исходным кодом, предназначенная для создания реактивных веб-приложений. Она была загружена на GitHub два года назад в тестовом режиме. Команда разработчиков Dash решила оставить этот прототип в сети, однако продолжила вести работу над проектом уже вне платформы GitHub. Благодаря обратной связи от банков и лабораторий, а также от команд, работающих с анализом данных, разработчики определили курс развития библиотеки. Сегодня уже представлена первая публичная версия Dash, которая подходит как для корпоративных клиентов, так для клиентов премиум-класса продукции Plotly. Библиотека может быть использована как с Plotly, так и самостоятельно.

Создание веб-приложений на Python с помощью Dash

В настоящее время Dash можно загрузить, используя диспетчер пакетов Python, с помощью команды pip install dash. Dash распространяется с открытым исходным кодом и под лицензией MIT. На официальном сайте вы сможете ознакомиться с руководством по библиотеке, и на GitHub вы найдёте исходный код.

Dash — библиотека пользовательского интерфейса для создания аналитических веб-приложений. Она будет полезна для тех, кто использует Python для анализа и исследования данных, визуализации, моделирования и отчётности.

Dash значительно упрощает создание GUI (графических пользовательских интерфейсов) для анализа данных. Вот пример приложения на Dash из 43 строк кода, который связывает выпадающее меню с графиком D3.js. Когда пользователь выбирает значение в выпадающем списке, код динамически экспортирует данные из Google Finance в Pandas DataFrame:

Код Dash является декларативным и реактивным, что упрощает создание сложных приложений, содержащих множество интерактивных элементов. Вот пример с 5 входными данными, 3 — выходными и с перекрёстной фильтрацией. Это приложение было написано на Python, и в нём всего лишь 160 строк кода:

Приложение на Dash с несколькими входными и выходными данным.

Для каждого элемента приложения можно задать собственные параметры размера, расположения, цвета и шрифта. Приложения на Dash создаются и публикуются в Сети, поэтому к ним можно применить всё, на что способен CSS. Ниже иллюстрируется пример тонко настраиваемого интерактивного приложения отчётности на Dash, выполненного в стиле отчёта финансовой организации Goldman Sachs.

Тонко настраиваемое приложение Dash, созданное в стиле отчёта финансовой организации Goldman Sachs.

Вам не нужно писать какой-либо код на JavaScript или HTML, когда ваше приложение на Dash запущено в веб-браузере. Dash предоставляет богатый набор интерактивных веб-компонентов.

import dash_core_components as dcc
dcc.Slider(value=4, min=-10, max=20, step=0.5,
           labels={-5: '-5 Degrees', 0: '0', 10: '10 Degrees'})

Пример простого ползунка на Dash

Dash предоставляет простой реактивный декоратор для привязки вашего кода анализа данных к пользовательскому интерфейсу Dash.

@dash_app.callback(Output('graph-id', 'figure'),
                   [Input('slider-id', 'value')])
def your_data_analysis_function(new_slider_value):
    new_figure = your_compute_figure_function(new_slider_value)
    return new_figure

Когда изменяется входной элемент (например, при выборе элемента в выпадающем списке или при передвижении ползунка), декоратор Dash предоставляет вашему коду Python новое входное значение.

Ваша функция Python может выполнять различные действия с новым входным значением: может фильтровать объект

DataFrame библиотеки Pandas, выполнять SQL-запрос, запускать симуляцию, выполнять вычисления или запускать тестирование. Dash рассчитывает, что ваша функция вернёт новое свойство для какого-нибудь элемента пользовательского интерфейса, будь то новый график, новая таблица или новый текст.

В качестве примера ниже представлено приложение на Dash, которое обновляет текстовый элемент при взаимодействии с графиком. Код приложения фильтрует данные в Pandas DataFrame на основе выбранной точки:

Приложение ниже отображает метаинформацию о лекарственных веществах при наведении курсора на точки в графике. Код приложения также добавляет строки в таблицу, когда появляются новые компоненты в выпадающем списке.

Благодаря этим двум разделениям между компонентами Python и реактивными функциональными декораторами, Dash разграничивает все технологии и протоколы, необходимые для создания интерактивного веб-приложения. Dash достаточно прост, чтобы привязать пользовательский интерфейс к коду Python за один вечер.

Архитектура

Flask и React.js

Приложения на Dash — веб-серверы, которые запускают Flask и связывают пакеты JSON через HTTP-запросы. Интерфейс Dash формирует компоненты, используя React.js.

Flask — великолепный фреймворк, который широко используется сообществом разработчиков Python во многих проектах. Основной экземпляр Flask и все его настраиваемые свойства доступны разработчикам приложений на Dash. Продвинутые разработчики могут расширить возможности приложений с помощью богатой коллекции плагинов Flask.

React.js также великолепен, например, мы переписали всю нашу веб-платформу и наш онлайн-редактор диаграмм с помощью React. Но есть кое-что, что действительно радует насчёт React — активный и талантливый состав сообщества разработчиков, который опубликовал тысячи высококачественных компонентов, начиная с выпадающих списков и слайдеров, заканчивая календарями и интерактивными таблицами. И всё это публикуется с открытым исходным кодом!

Dash использует мощь Flask и React, подстраивая их под работу с Python для специалистов по анализу и обработке данных, которые могут не быть экспертами в области веб-разработки.

От React.js к компонентам Python

Компоненты Dash — это классы Python, которые кодируют свойства и значения конкретного компонента React и упорядочиваются как JSON. Dash предоставляет набор инструментов для лёгкой упаковки компонентов React в вид компонентов, которые могут быть использованы в Dash.

Этот набор инструментов использует динамическое программирования для автоматического создания классов Python из аннотированного свойства React — propTypes. На выходе классы Python, которые представляют компоненты Dash, являются удобными для пользователя, так как они имеют автоматическую проверку аргументов, строк документации и прочее.

Вот пример динамически сгенерированной проверки ошибочного аргумента:

>>> import dash_core_components as dcc
>>> dcc.Dropdown(valu=3)
Ошибка: неизвестный ключевой аргумент `valu`
Допустимые аргументы: id, className, disabled, multi, options, placeholder, value

Пример динамически создаваемых строк документации:

 >>> help(dcc.Dropdown)
class Dropdown(dash.development.base_component.Component)
 |  Компонент выпадающего списка.
 |  Компонент выпадающего списка служит для выбора одного или более
 |  элементов.
 |  значения и названия элементов выпадающего списка определяются в `options`
 |  свойство и выбранный элемент(ы) определяются свойством `value`.
| | используйте выпадающий список, только если у вас много вариантов выбора (больше 5), или | когда вы ограничены пространством. В противном случае вы можете использовать переключатели или чекбоксы, | Которые покажут сразу все элементы пользователю. | | Аргументы ключевых слов: | - id (строка; необязательный) | - className (строка; необязательный) | - disabled (логический тип; необязательный): если true, выбор блокируется | - multi (логический тип; необязательный): если true, пользователь может выбрать несколько значений | - options (список; необязательный) | - placeholder (строка; необязательный): серый текст по умолчанию, если ничего не выбрано | - value (строка | список; необязательный): значение поля ввода. Если `multi` false (по умолчанию), | то value — строка, соответствующая своим значениям, | указанным в свойстве `options`. Если `multi` — true, то | можно выбрать сразу несколько значений, а `value` — | массив элементов со значениями, соответствующими в свойстве | `options`.
| | Доступные события: 'change

Полный набор HTML-тегов (наподобие div, img, table) также обрабатывается с помощью React, а их классы Python доступны через библиотеку

dash_html_component. Основной набор интерактивных компонентов, таких как Dropdown, Graph, Slider, будет поддерживаться командой Dash через dash_core_components. Обе библиотеки используют стандартный набор инструментальных средств React-to-Dash с открытым исходным кодом, который вы могли бы использовать при необходимости написания своей собственной библиотеки компонентов.

Ваше приложение автоматически не привязывается к библиотеке компонентов Dash. Библиотека компонентов импортируется отдельно от основной библиотеки Dash. С помощью набора инструментальных средств React-to-Dash можно легко записать или перенести компонент React.js в класс Python, который можно использовать в приложении Dash. На официальном сайте вы найдёте руководство по созданию собственных компонентов или можете попросить команду разработчиков Dash написать их для вас.

Многопользовательские приложения

Свойства приложения на Dash хранятся в интерфейсе (в браузере). Это позволяет использовать приложения, написанные с использованием Dash, в многопользовательском режиме: может быть открыто несколько независимых друг от друга сессий, в которых действия одних пользователей не будут влиять на данные других пользователей. Код приложения на Dash является функциональным: он может считывать значения из глобальных свойств Python, но не может вносить в них изменения. Этот функциональный подход можно легко обосновать и протестировать — это просто входные и выходные данные без каких-либо побочных эффектов или свойств.

CSS и стили

CSS и стили по умолчанию хранятся вне базовой библиотеки, чтобы сохранить принцип модульности и независимого управления версиями и чтобы подтолкнуть разработчиков Dash-приложений настраивать вид своих приложений.

Команда Dash разместила руководство по основным стилям.

Визуализация данных

Библиотека Dash поставляется с компонентом Graph, который отвечает за отображение диаграмм с помощью Plotly.js. Библиотека Plotly.js отлично подходит к Dash (отличное дополнение), так как она декларативна и имеет открытый исходный код. Кроме того, она поддерживает полный спектр научных, финансовых и деловых диаграмм. Она создана на основе D3.js (для диаграмм типографического качества и экспорта векторных изображений) и WebGL (для высокопроизводительной визуализации).

В библиотеке Dash элемент Graph использует тот же синтаксис, что и библиотека Plotly.py с открытым исходным кодом, что даёт вам возможность легко переключаться между ними. Компонент Graph подключается к системе событий Plotly.js, позволяя авторам писать приложения, которые реагируют на наведение курсора, щелчки и выбор определённых точек на графиках Plotly.

Репозитории с открытым исходным кодом

Прототипирование

Dash — это новая библиотека в среде Python, однако концепции и идеи, на которых строится Dash, существуют в течение десятилетий на разных языках и в разных приложениях.

Если вы разбираетесь в Excel, значит, вам будет проще разобраться и в Dash. Ведь они оба используют «реактивную» модель программирования. В Excel ячейки с выходными данными обновляются автоматически при изменении параметров ячеек с входными данными. Любая ячейка может быть входной или выходной или и тем, и другим. В ячейках с входными данными нет информации о том, какие ячейки с выходными данными зависят от них, что упрощает добавление новых ячеек с выходными данными или позволяет связать несколько ячеек. Вот пример Excel-приложения:

Можно провести аналогию для Dash. Вместо ячеек у нас есть богатый спектр веб-компонентов, таких как ползунки, поля ввода, выпадающие списки и графики. Вместо написания сценария Excel или VBA мы пишем код Python. Ниже представлено то же самое приложение, но в этот раз оно написано на Dash:

app.layout = html.Div([
    html.Label('Hours per Day'),
    dcc.Slider(id='hours', value=5, min=0, max=24, step=1),
    html. Label('Rate'),
    dcc.Input(id='rate', value=2, type='number'),
    html.Label('Amount per Day'),
    html.Div(id='amount'),
    html.Label('Amount per Week'),
    html.Div(id='amount-per-week')
])
@app.callback(Output('amount', 'children'),
              [Input('hours', 'value'), Input('rate', 'value')])
def compute_amount(hours, rate):
    return float(hours) * float(rate)
@app.callback(Output('amount-per-week', 'children'),
              [Input('amount', 'children')])
def compute_amount(amount):
    return float(amount) * 7

Некоторым разработчикам нравится этот пример, потому что Excel по-прежнему занимает доминирующее положение даже в технических вычислениях и в финансовой математике. Я не думаю, что доминирующее положение Excel — это технический вопрос. В конце концов, есть легионы программистов, которые изучили нюансы Excel, VBA и даже SQL.

Более того, таблицы Excel легче распространять, чем программы на Python, а ячейки Excel легче редактировать, чем аргументы командной строки.

Тем не менее, моделирование в Excel имеет известные ограничения: эти таблицы часто становятся слишком большими или уязвимыми, чтобы переводить их на производственный уровень, проводить экспертную оценку или тестировать и поддерживать. Вам ведь знаком случай со знаменитой опечаткой в 2013 году?

Надеемся, что Dash сделает использование Python в проектах по обработке данных проще. Благодаря одним и тем же функциональным и реактивным принципам, можно так же легко написать приложение на Dash, как написать аналитическую таблицу. Это, безусловно, более мощный и презентабельный инструмент.

Фреймворк Shiny

Если вы программируете на R, вам повезло. Shiny — это реактивный фреймворк для создания веб-приложений на чистом R, и это отлично! Вы даже можете создавать интерактивные графики с библиотекой Shiny или Plotly для R. Dash и Shiny похожи, но Dash не стремится быть копией Shiny, так как философии Python и R достаточно различаются, что приводит к необходимости использования разного синтаксиса.

Интерактивное веб-приложение, созданное с помощью Shiny на языке R.

Структурирование данных с MATLAB

Если вы программируете на MATLAB, то вам, возможно, знакома GUIDE — библиотека пользовательского интерфейса для MATLAB. Компания Mathworks была одной из новаторов в области технических вычислений. GUIDE была написана в далёком 2004 году.

Приложение, созданное с помощью библиотеки GUIDE на MATLAB.

Если ваши данные структурированы в базе данных, вы могли бы использовать Tableau или любой другой BI-инструмент. Tableau — восхитительный инструмент. Компания установила новый вектор развития в своей отрасли, согласно которому, у конечного пользователя должна быть автономия, чтобы он мог иметь возможность исследовать данные внутри своей организации. Компания также помогла сделать популярнее концепции детализации данных и перекрёстной фильтрации.

Перекрёстная фильтрация в Tableau.

Dash также служит дополнением к BI-инструментам, наподобие вышеупомянутых. Они отлично подходят для структурирования данных. Но когда дело доходит до преобразования данных и аналитики, превзойти размах и гибкость языков программирования и сообществ, вроде Python, становится труднее. Dash абстрагируется от множества сложностей в создании пользовательских интерфейсов, позволяя вам сделать это красиво для вашей аналитической базы данных.

Виджеты Jupyter

Наконец, пришло время рассказать о виджетах Jupyter. Они обеспечивают действительно приятный фреймворк внутри интерфейса Notebook. Вы можете добавлять ползунки к вашим графикам в Jupyter Notebook.

Виджеты в Dash похожи на виджеты Jupyter. В Jupyter Notebooks есть возможность добавлять виджеты непосредственно рядом с кодом. В Dash элементы управления хранятся отдельно от вашего кода. Dash больше нацелена на приложения для распространения, чем на распространяемый код и документацию. Вы всегда можете смешивать и сопоставлять инструменты, создавая свои приложения на Dash в среде Jupyter Notebook.

Команде разработчиков Dash также очень нравится проект nteract, который действительно снижает порог вхождения в Python и Jupyter Notebook, позволяя упаковать Jupyter Notebook в виде настольного приложения.

Лицензирование и бизнес-модель с открытым исходным кодом

Стартап поддерживает библиотеки с открытым исходным кодом для Python, R и MATLAB, которые взаимодействуют с plotly.js. Компания также поддерживает веб-приложение для создания диаграмм и подключения их к базам данных (стыковочные библиотеки также распространяются с открытым исходным кодом).

Если вы используете локальную версию с открытым исходным кодом, в таком случае ограничений нет. Вы можете управлять развёртыванием Dash-приложений самостоятельно через платформы вроде Heroku или Digital Ocean.

Если вы ищите вдохновение для создания своих пользовательских интерфейсов в области технических вычислений, рекомендуем прочитать статью Брета Виктора

Вам также может понравиться проект Explorable Explanations, который специализируется на интерактивном обучении.

Перевод статьи «Create Reactive Web Apps in pure Python»

Python и разработка простого веб-приложения, использующего технологии машинного обучения

Тот, кто занимается машинным обучением (Machine Learning, ML), обычно, реализуя различные проекты, выполняет следующие действия: сбор данных, их очистка, разведочный анализ данных, разработка модели, публикация модели в локальной сети или в интернете. Вот хорошее видео, в котором можно узнать подробности об этом.


Жизненный цикл проекта в сфере машинного обучения

Этап публикации модели завершает жизненный цикл ML-проектов. Он так же важен для дата-сайентистов и специалистов по машинному обучению, как и другие этапы. Обычные подходы к публикации моделей предусматривают использование универсальных фреймворков, таких, как Django или Flask. Главные проблемы тут заключаются в том, что для применения подобных инструментов требуются особые знания и навыки, и в том, что работа с ними может потребовать немалых затрат времени.

Автор статьи, перевод которой мы сегодня публикуем, хочет рассказать о том, как, используя Python-библиотеки streamlit, pandas и scikit-learn, создать простое веб-приложение, в котором применяются технологии машинного обучения. Он говорит, что размер этого приложения не превышает 50 строк. Статья основана на этом видео, которое можно смотреть параллельно с чтением. Инструменты, которые будут здесь рассмотрены, кроме прочего, позволяют ускорить и упростить развёртывание ML-проектов. 

Обзор модели, определяющей вид цветка ириса


Сегодня мы создадим простое веб-приложение, использующее технологии машинного обучения. Оно будет классифицировать цветки ириса из выборки Фишера, относя их к одному из четырёх видов: ирис щетинистый (iris setosa), ирис версиколор (iris versicolor), ирис виргинский (iris virginica). Возможно, вы уже видели множество ML-примеров, построенных на основе этого знаменитого набора данных. Но, надеюсь, то, что я тут буду рассматривать ещё один такой пример, вам не помешает. Ведь этот набор — он как «lorem ipsum» — классический бессмысленный текст-заполнитель, который вставляют в макеты страниц.

Нам, чтобы построить модель и опубликовать её где-нибудь, понадобятся библиотеки streamlit, pandas и scikit-learn. Взглянем на общую схему проекта. Он будет состоять из двух больших частей: фронтенд и бэкенд.

Во фронтенд-части приложения, а именно, на веб-странице, будет боковая панель, находящаяся слева, в которой можно будет вводить входные параметры модели, которые связаны с характеристиками цветков ириса: длина лепестка (petal length), ширина лепестка (petal width), длина чашелистика (sepal length), ширина чашелистика (sepal width). Эти данные будут передаваться бэкенду, где предварительно обученная модель будет классифицировать цветки, используя заданные характеристики. Фактически, речь идёт о функции, которая, получая характеристики цветка, возвращает его вид. Результаты классификации отправляются фронтенду.

В бэкенд-части приложения то, что ввёл пользователей, сохраняется в датафрейме, который будет использоваться в виде тестовых данных для модели. Потом будет построена модель для обработки данных. В ней будет применяться алгоритм «случайный лес» из библиотеки scikit-learn. И наконец, модель будет применена для классификации данных, введённых пользователем, то есть — для определения вида цветка. Кроме того, вместе со сведениями о виде цветка, будут возвращаться и данные о прогностической вероятности. Это позволит нам определить степень достоверности результатов классификации.

Установка библиотек


Как уже было сказано, здесь мы будем пользоваться тремя библиотеками: streamlit, pandas и scikit-learn. Установить их можно, пользуясь pip install:
pip install streamlit
pip install pandas
pip install -U scikit-learn

Разработка веб-приложения


Теперь напишем код приложения. Проект у нас довольно скромный. Он состоит из менее чем 50 строк кода. А если точнее — то их тут всего 48. Если же этот код «уплотнить», избавившись от комментариев и пустых строк, то размер текста программы сократится до 36 строк.
import streamlit as st
import pandas as pd
from sklearn import datasets
from sklearn.ensemble import RandomForestClassifier

st.write("""
# Simple Iris Flower Prediction App
This app predicts the **Iris flower** type!
""")

st.sidebar.header('User Input Parameters')

def user_input_features():
    sepal_length = st.sidebar.slider('Sepal length', 4.3, 7.9, 5.4)
    sepal_width = st.sidebar.slider('Sepal width', 2.0, 4.4, 3.4)
    petal_length = st.sidebar.slider('Petal length', 1.0, 6.9, 1.3)
    petal_width = st.sidebar.slider('Petal width', 0.1, 2.5, 0.2)
    data = {'sepal_length': sepal_length,
            'sepal_width': sepal_width,
            'petal_length': petal_length,
            'petal_width': petal_width}
    features = pd.DataFrame(data, index=[0])
    return features

df = user_input_features()

st.subheader('User Input parameters')
st.write(df)

iris = datasets.load_iris()
X = iris.data
Y = iris.target

clf = RandomForestClassifier()
clf.fit(X, Y)

prediction = clf. predict(df)
prediction_proba = clf.predict_proba(df)

st.subheader('Class labels and their corresponding index number')
st.write(iris.target_names)

st.subheader('Prediction')
st.write(iris.target_names[prediction])
#st.write(prediction)

st.subheader('Prediction Probability')
st.write(prediction_proba)

Разбор кода


Теперь разберём этот код.

▍Импорт библиотек

import streamlit as st
import pandas as pd
from sklearn import datasets
from sklearn.ensemble import RandomForestClassifier

В этих строках мы импортируем библиотеки streamlit и pandas, назначая им, соответственно, псевдонимы st и pd. Мы, кроме того, импортируем пакет datasets из библиотеки scikit-learn (sklearn). Мы воспользуемся этим пакетом ниже, в команде iris = datasets.load_iris(), для загрузки интересующего нас набора данных. И наконец, тут мы импортируем функцию RandomForestClassifier() из пакета sklearn. ensemble.

▍Формирование боковой панели

st.sidebar.header('User Input Parameters')

В этой строке мы описываем заголовок боковой панели, используя функцию st.sidebar.header(). Обратите внимание на то, что тут sidebar стоит между st и header(), что и даёт полное имя функции st.sidebar.header(). Эта функция сообщает библиотеке streamlit о том, что мы хотим поместить заголовок в боковую панель.
def user_input_features():
    sepal_length = st.sidebar.slider('Sepal length', 4.3, 7.9, 5.4)
    sepal_width = st.sidebar.slider('Sepal width', 2.0, 4.4, 3.4)
    petal_length = st.sidebar.slider('Petal length', 1.0, 6.9, 1.3)
    petal_width = st.sidebar.slider('Petal width', 0.1, 2.5, 0.2)
    data = {'sepal_length': sepal_length,
            'sepal_width': sepal_width,
            'petal_length': petal_length,
            'petal_width': petal_width}
    features = pd. DataFrame(data, index=[0])
    return features

Здесь мы объявляем функцию user_input_features(), которая берёт данные, введённые пользователем (то есть — четыре характеристики цветка, которые вводятся с использованием ползунков), и возвращает результат в виде датафрейма. Стоит отметить, что каждый входной параметр вводится в систему с помощью ползунка. Например, ползунок для ввода длины чашелистика (sepal length) описывается так: st.sidebar.slider(‘Sepal length’, 4.3, 7.9, 5.4). Первый из четырёх входных аргументов этой функции задаёт подпись ползунка, выводимую выше него. Это, в данном случае, текст Sepal length. Два следующих аргумента задают минимальное и максимальное значения, которые можно задавать с помощью ползунка. Последний аргумент задаёт значение, выставляемое на ползунке по умолчанию, при загрузке страницы. Здесь это — 5.4.

▍Создание модели

df = user_input_features()

Здесь датафрейм, сформированный функцией user_input_features(), которую мы только что обсудили, записывается в переменную df.
iris = datasets.load_iris()

Загрузка набора данных Iris из пакета sklearn.datasets и запись его в переменную iris.
X = iris.data

Создание переменной Х, содержащей сведения о 4 характеристиках цветка, которые имеются в iris.data.
Y = iris.target

Создание переменной Y, которая содержит сведения о виде цветка. Эти сведения хранятся в iris.target.
clf = RandomForestClassifier()

Здесь мы, пользуясь функцией RandomForestClassifier(), назначаем классификатор, основанный на алгоритме «случайный лес», переменной clf.
clf.fit(X, Y)

Тут мы обучаем модель, пользуясь функцией clf.fit(), передавая ей в качестве аргументов переменные X и Y. Суть происходящего заключается в том, что модель будет обучена определению вида цветка (Y) на основе его характеристик (X).
prediction = clf.predict(df)

Получение сведений о виде цветка с помощью обученной модели.
prediction_proba = clf.predict_proba(df)

Получение сведений о прогностической вероятности.

▍Формирование основной панели

st.write("""
# Simple Iris Flower Prediction App
This app predicts the **Iris flower** type!
""")

Здесь мы, пользуясь функцией st.write(), выводим текст. А именно, речь идёт о заголовке, выводимом в главной панели приложения, текст которого задан в формате Markdown. Символ # используется для указания того, что текст является заголовком. За строкой заголовка идёт строка обычного текста.
st.subheader('User Input parameters')

В этой строке, пользуясь функцией st.subheader(), мы указываем подзаголовок, выводимый в основной панели. Этот подзаголовок используется для оформления раздела страницы, в котором будет выведено содержимое датафрейма, то есть того, что было введено пользователем с помощью ползунков.
st.write(df)

Этой командой мы выводим на основную панель содержимое датафрейма df.
st.subheader('Class labels and their corresponding index number')

Данный код описывает второй подзаголовок основной панели. В этом разделе будут выведены данные о видах цветков.
st.write(iris.target_names)

Здесь, во второй раздел основной панели, выводятся названия видов цветков (setosa, versicolor и virginica) и соответствующие им номера (0, 1, 2).
st.subheader('Prediction')

Вывод третьего подзаголовка для раздела, в котором будет находиться результат классификации.
st.write(iris.target_names[prediction])

Вывод результата классификации. Стоит отметить, что содержимое переменной prediction — это номер вида цветка, выданный моделью на основе входных данных, введённых пользователем. Для того чтобы вывести название вида, используется конструкция iris.target_names[prediction].
st.subheader('Prediction Probability')

Выводим заголовок четвёртого (и последнего) раздела основной панели. Здесь будут представлены данные о прогностической вероятности.
st.write(prediction_proba)

Вывод данных о прогностической вероятности.

Запуск веб-приложения


Код приложения сохранён в файле iris-ml-app.py. Мы готовы к тому, чтобы его запустить. Сделать это можно, выполнив следующую команду в терминале:
streamlit run iris-ml-app.py

Если всё идёт как надо, через некоторое время вы должны увидеть следующее:
> streamlit run iris-ml-app.py
You can now view your Streamlit app in your browser.
Local URL: http://localhost:8501
Network URL: http://10.0.0.11:8501

Через несколько секунд должно появиться окно браузера, в котором будет открыт адрес http://localhost:8501.

То, что вы увидите, будет похоже на следующий рисунок.


Скриншот веб-приложения для классификации цветков ириса. Если щёлкнуть по стрелке, находящейся в левом верхнем углу окна, расположенного в верхней части рисунка, будет открыта боковая панель

Итоги


Можете себя поздравить: только что вы создали веб-приложение, в котором используются технологии машинного обучения. Вы вполне можете упомянуть подобное приложение в своём портфолио ML-проектов, а если хотите, можете опубликовать его на своём веб-сайте (правда, вы, вполне возможно, решите построить собственную модель, используя другие данные). 

Пользуетесь ли вы библиотекой streamlit?

Введение в создание веб-приложений на Python

В создании веб-приложений часто требуется использование различных фреймворков. В данной статье речь пойдет именно о них.

С помощью фреймворков разработка больших надежных обслуживаемых веб-приложений становится намного проще. Также она уберегает разработчиков от повторного написания одного и того же кода снова и снова.

Общие характеристики:

  • Маршрутизация URL-адресов
  • Шаблоны вывода
  • Управление базами данных
  • Управление сеансом
  • Безопасность от стандартных атак

С помощью фреймворка вы можете реализовать большинство этих функций.

Например, фреймворк Flask не поддерживает базы данных. Для их использования потребуется отдельный модуль. А вот фреймворк Django по умолчанию поддерживает базы данных.

Зачастую у нас нет времени на решение тех проблем, которые были решены до нас. И тут на помощь приходят фреймворки. С другой стороны, если вы опытный веб-разработчик, фреймворк может предоставлять не весь спектр функций, который требуется.

Django и Flask – самые популярные веб-фреймворки. Однако ознакомиться с другими фреймворками не помешает.

Вот некоторые из них:

  • Bottle
  • Pyramid
  • Muffin
  • CherryPy
  • web2py
  • Falcon
  • Turbo2Gears


Django является наиболее часто используемым фреймворком Python. У него довольно широкий функционал, поэтому вы можете сосредоточиться на разработке веб-приложений и не думать ни о чем другом. Сайты, созданные с помощью Django, имеют дело с высоким трафиком (50 тысяч просмотров в секунду и более).

Доступ к базе данных осуществляется через объектно-реляционное преобразование: вы определяете свои модели данных в Python, и Django начинает работать с реляционными системами управления базами данных (СУБД). Однако, если вам нужно, вы можете написать свои собственные SQL-запросы в Django. Также в этом фреймворке поддерживается маршрутизация URL-адресов.

Особенности:

    • Объектно-реляционное преобразование
    • Маршрутизация URL-адресов и их представления
    • Механизм шаблонов
    • Формы
    • Идентификация
    • Права администратора
    • Интернационализация
    • Безопасность

Если вы хотите узнать о Django побольше, прочтите это.

Знаете ли вы, что такие сайты, как NASA, BitBucket и Pinterest были написаны с помощью Django?


Flask является микрофреймворком Python, который имеет модульный дизайн. Данный фреймворк предназначен для создания веб-приложений. У Flask нет определенной системы базы данных или системы ORM. Если вы хотите использовать базу данных, то вам потребуется отдельный модуль. Flask часто комбинируют с SQLAlchemy для использования баз данных.

Flask очень прост и интуитивно понятен:

from flask import Flask
app = Flask(__name__)
 
@app.route('/')
def hello_world():
    return 'Hello World!'
 
if __name__ == '__main__':
    app.run()

Платформа поддерживает маршрутизацию URL-адресов, шаблоны (с Jinja2), управление сеансами и имеет некоторые фишки в области безопасности.

Особенности:

  • Маршрутизация URL-адресов и их представления
  • Механизм шаблонов
  • Управление сеансами

Если вы хотите узнать о Flask побольше, прочтите это.

Знаете ли вы, что изначально Flask был придуман как первоапрельская шутка?

Оригинал

Как написать веб-приложение для демонстрации data science проекта на Python – Блог SkillFactory

На чтение 11 мин. Просмотров 397 Обновлено

Создавайте веб-приложения для демонстрации своих проектов без знания каких-либо веб-фреймворков.

Проект по машинному обучению никогда не будет по-настоящему завершен, пока мы не сможем продемонстрировать его результаты.

В прошлом хорошо сделанной визуализации или небольшой презентации в Power Point было достаточно для демонстрации проекта, но сейчас, с появлением инструментов для создания дашбордов вроде RShiny или Dash, хороший data science-специалист должен иметь некоторое представление о веб-фреймворках.

Но проблема в том, что веб-фреймворки достаточно сложны в изучении. Я до сих пор путаюсь по всех этих HTML, CSS и Javascript, и даже что-то, что выглядит простым в исполнении, начинает работать только после большого количества проб и ошибок.

Не говоря уж о том, что существует огромное количество способов сделать одно и то же, и это сбивает с толку людей, для которых веб-разработка является второстепенным навыком.

Так что же, мы обречены на изучение веб-фреймворков? Или на звонки нашим друзьям-разработчикам посреди ночи с глупыми вопросами?

И тут нам на выручку спешит Streamlit с обещанием позволить нам создавать веб-приложения, используя только Python. Следуя философии Python – “просто – лучше, чем сложно”, Streamlit предельно упрощает создание приложений.

В этой статье я хочу показать как создавать приложения для демонстрации data science-проектов с помощью Streamlit.

Чтобы лучше понять архитектуру Streamlit, а также идеи, которые привели к его созданию, прочитайте отличную статью одного из разработчиков и основателей Адриана Трёля.

Узнайте подробности о курсе Data Science на нашем сайте.


Установить Streamlit очень просто, делается это с помощью одной команды: 

pip install streamlit

Чтобы проверить успешно ли прошла установка, можно использовать

streamlit hello

После этой команды на экране должен появиться следующий текст:

Теперь вы можете перейти по локальному URL localhost:8501 в вашем браузере, чтобы увидеть Streamlit в действии. Разработчики предоставили несколько демо, которые будет интересно изучить. Не торопитесь и постарайтесь понять широкие возможности приложения, прежде чем вернуться к этой статье.


Streamlit Hello World

Streamlit стремится сделать разработку приложений проще с использованием исключительно Python.

Давайте попробуем написать простое приложение, чтобы увидеть получилось ли это у них.

Я начну с простого приложения, которое мы назовем Streamlit Hello World. Просто скопируйте текст ниже в файл с названием helloworld.py:

import streamlit as st
x = st.slider('x')
st.write(x, 'squared is', x * x)

И используйте в терминале команду:

streamlit run helloworld.py

Вуаля, вы должны увидеть простое приложение в своем браузере по адресу localhost:8501, которое позволит вам двигать слайдер для выбора числа и видеть результат возведения этого числа в квадрат.

Простое приложение со слайдером

Это было достаточно просто. В приложении выше мы использовали две функции из Streamlit:

  • Виджет st.slider, который мы можем сдвигать, чтобы изменять вывод веб-приложения
  • И универсальную команду st.write. Я в восторге от того, как она может писать все что угодно, включая графики, датафреймы и обыкновенный текст. Но мы еще поговорим об этом позже.

Важно: Помните, что каждый раз, когда мы меняем значение в виджете, все приложение перезапускается целиком.


Виджеты дают нам способ контролировать наше приложение. Лучше всего почитать о них в документации Streamlit, но я опишу несколько основных, которые вам возможно пригодятся.

1. Слайдер

streamlit.slider(label, min_value=None, max_value=None, value=None, step=None, format=None)

Мы уже видели st. slider в действии. Он может быть использован с указанием минимального и максимального значения, а также шага для получения входящих значений в заданном диапазоне.

2. Ввод текста

st.text_input — это самый простой способ получить на вход текст от пользователя — будь это какой-то URL или текст для анализа его тональности. Нужно только передать функции название текстового окна.

import streamlit as st
url = st.text_input('Enter URL')
st.write('The Entered URL is', url)

Так будет выглядеть получившееся приложение:

Простое приложение с виджетом text_input

Совет: Вы можете просто изменить файл helloworld.py и обновить браузер. Я обычно работаю таким образом: открываю и изменяю файл в Sublime Text и наблюдаю за изменениями в браузере расположенном в рядом с окном редактора.

3. Чекбокс

Один из вариантов использования чекбоксов — это показывать или прятать определенную часть приложения. Или, например, чекбокс может использоваться для выбора булевозначного параметра для функции. st.checkbox()использует только один аргумент — метку виджета. 

В этом приложении чекбокс используется для переключения условного оператора:

import streamlit as st
import pandas as pd
import numpy as np
df = pd.read_csv("football_data.csv")
if st.checkbox('Show dataframe'):
   st.write(df)
Простой виджет-чекбокс

4. Выпадающий список

Мы можем использовать st.selectbox для выбора из списка. Обычно эта функция используется для создания выпадающего списка, который позволяет выбрать значение.

import streamlit as st
import pandas as pd
import numpy as np
df = pd.read_csv("football_data.csv")
option = st.selectbox(
   'Which Club do you like best?',
    df['Club'].unique())
'You selected: ', option
Приложение с выпадающим списком

5. Выбор нескольких значений

Мы также можем выбрать несколько значений из выпадающего списка. Для этого можно использовать st.multiselect, которая сохранит несколько выбранных значений в виде списка в переменную options:

import streamlit as st
import pandas as pd
import numpy as np
df = pd. read_csv("football_data.csv")
options = st.multiselect(
'What are your favorite clubs?', df['Club'].unique())
st.write('You selected:', options)
Виджет с мультивыбором

Вот мы и разобрали самые важные виджеты. Теперь давайте создадим простое приложение с использованием нескольких из них.

Начнем с простого: попробуем визуализировать данные футбольных матчей с использованием Streamlit. Это достаточно легко сделать с помощью вышеописанных виджетов:

import streamlit as st
import pandas as pd
import numpy as np
df = pd.read_csv("football_data.csv")
clubs = st.multiselect('Show Player for clubs?', df['Club'].unique())
nationalities = st.multiselect('Show Player from Nationalities?', df['Nationality'].unique())
# Filter dataframe
new_df = df[(df['Club'].isin(clubs)) & (df['Nationality'].isin(nationalities))]
# write dataframe to screen
st.write(new_df)

Получившееся приложение будет выглядеть вот так:

Сочетание нескольких виджетов

Это было легко. Но результат выглядит достаточно просто, может стоит добавить графиков?

Streamlit на данный момент поддерживает многие библиотеки для построения графиков. Среди них Plotly, Bokeh, Matplotlib, Altair и Vega charts. Кроме того, работает и Plotly Express, хотя это и не указано в документации. Помимо внешних библиотек, в Streamlit встроены и свои нативные типы графиков, например st.line_chart и st.area_chart.

Сейчас мы будем работать с plotly_express. Вот код для нашего простого приложения. Мы используем всего 4 вызова Streamlit, все остальное — это простой Python:

import streamlit as st
import pandas as pd
import numpy as np
import plotly_express as px
df = pd.read_csv("football_data.csv")
clubs = st.multiselect('Show Player for clubs?', df['Club'].unique())
nationalities = st.multiselect('Show Player from Nationalities?', df['Nationality'].unique())
new_df = df[(df['Club']. isin(clubs)) & (df['Nationality'].isin(nationalities))]
st.write(new_df)
# create figure using plotly express
fig = px.scatter(new_df, x ='Overall',y='Age',color='Name')
# Plot!
st.plotly_chart(fig)
Приложение с графиком

В начале статьи я говорил, что каждый раз, когда мы меняем какой-либо виджет, все приложение полностью запускается заново. Это нецелесообразно, если мы создаем приложения для моделей глубокого обучения или сложных моделей машинного обучения. Streamlit решает эту проблему через кэширование.

1. Кэширование

В нашем базовом приложении мы читаем датафрейм pandas снова всякий раз, когда значение изменяется. И хотя это работает с маленькими базами данных как та, которую мы используем сейчас, но это не сработает с big data или если нам понадобится проводить большое количество манипуляций с данными. Давайте используем кэширование через функцию st.cache:

Для более сложных и требующих много времени для вычисления функций, которые должны запускаться только один раз (например, загрузка больших моделей глубокого обучения), можно использовать такой вариант:

@st. cache
def complex_func(a,b):
   DO SOMETHING COMPLEX
# Won't run again and again.
complex_func(a,b)

Когда мы помечаем функцию кэширующим декоратором, всякий раз, когда эта функция вызывается, Streamlit будет проверять входные параметры функции.

Если Streamlit видит эти параметры впервые, он запустит функцию и сохранит результат в локальном кэше.

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

2. Сайдбар

В зависимости от ваших предпочтений, вы можете сделать что-то похожее на Rshiny dashboards и переместить свои виджеты в боковую панель, чтобы придать приложению более аккуратный вид. Для этого просто добавьте st.sidebar в код вашего виджета:

import streamlit as st
import pandas as pd
import numpy as np
import plotly_express as px
df = st.cache(pd.read_csv)("football_data.csv")
clubs = st. sidebar.multiselect('Show Player for clubs?', df['Club'].unique())
nationalities = st.sidebar.multiselect('Show Player from Nationalities?', df['Nationality'].unique())
new_df = df[(df['Club'].isin(clubs)) & (df['Nationality'].isin(nationalities))]
st.write(new_df)
# Create distplot with custom bin_size
fig = px.scatter(new_df, x ='Overall',y='Age',color='Name')
# Plot!
st.plotly_chart(fig)
Виджеты перемещены в сайдбар
3. Markdown

Мне нравится использовать Markdown. Мне он кажется менее громоздким, чем HTML, и более подходящим для работы в data science. Можем ли мы использовать Markdown в Streamlit-приложении?

И ответ: да, можем. Есть несколько способов это осуществить. На мой взгляд, лучший вариант — это использовать Magic commands. Эти команды позволят вам использовать Markdown точно так же как и простое комментирование. Но вы также можете воспользоваться командой st.markdown.

import streamlit as st
import pandas as pd
import numpy as np
import plotly_express as px
'''
# Club and Nationality App
This very simple webapp allows you to select and visualize players from certain clubs and certain nationalities. 
'''
df = st.cache(pd.read_csv)("football_data.csv")
clubs = st.sidebar.multiselect('Show Player for clubs?', df['Club'].unique())
nationalities = st.sidebar.multiselect('Show Player from Nationalities?', df['Nationality'].unique())
new_df = df[(df['Club'].isin(clubs)) & (df['Nationality'].isin(nationalities))]
st.write(new_df)
# Create distplot with custom bin_size
fig = px.scatter(new_df, x ='Overall',y='Age',color='Name')
'''
### Here is a simple chart between player age and overall
'''
st.plotly_chart(fig)

Финальное демо приложения


Streamlit сделал процесс создания приложений значительно проще, и я однозначно рекомендую его к использования.

В этой статье я показал очень простое веб-приложение, но на деле возможности использования безграничны. В качестве примера хочу привести GAN-генератор лиц с сайта Streamlit. Это приложение работает на основе тех же идей виджетов и кэширования.

Мне нравятся цветовая гамма и стили, которые разработчики Streamlit используют по умолчанию, плюс мне кажется, Streamlit удобнее в использовании, чем Dash, который я использовал до этого для создания демо. К тому же Streamlit позволяет добавлять аудио и видео в свои приложения.

Отдельный бонус — это то, что Streamlit является бесплатным open source решением, которое работает прямо из коробки. В прошлом мне приходилось обращаться к друзьям-разработчикам для любого изменения в демо или презентации; теперь все это я могу относительно просто проделать сам.

Я не знаю, будут ли Streamlit-приложения хорошо работать в производственной среде, но они отлично подходят для proof of concept и демо. Я планирую продолжить работать со Streamlit, и, учитывая простоту использования и возможности, которые он предоставляет, я думаю, вам тоже стоит об этом задуматься.Вы можете найти код финальной версии приложения здесь.

Оригинал: How to write Web apps using simple Python for Data Scientists?

Перевод: Ухарова Елена

Краткое руководство. Создание веб-приложения Python с помощью Visual Studio

    • Строка 2: Вы не используете колбу .escape () больше, поэтому вы можете удалить его из оператора импорта.

    • Строки 8, 11 и 12: Как и раньше, вы получаете отправленное пользователем значение через глобальный объект запроса Flask. Используя словарный метод .get () , вы гарантируете, что будет возвращена пустая строка, если ключ не найден. Это произойдет, если страница загружена изначально, а пользователь еще не отправил форму. Это реализовано в строках 11 и 12.

    • Строка 19: Возвращая форму с пустой строкой по умолчанию, вставленной в конец, вы избегаете отображения чего-либо до того, как форма была отправлена.

    • Строки 9 и 10: После того, как пользователи введут значение и нажмут Преобразовать , та же страница загрузится снова. На этот раз request.args.get ("celsius", "") находит ключ celsius и возвращает связанное значение. Это заставляет условный оператор оценивать True , а пользовательское значение передается в fahrenheit_from () .

    • Строки с 24 по 29: fahrenheit_from () проверяет, ввел ли пользователь допустимый ввод. Если предоставленное значение может быть преобразовано в с плавающей запятой , тогда функция применяет код преобразования температуры и возвращает температуру в градусах Фаренгейта. Если преобразовать не удается, возникает исключение ValueError , и вместо этого функция возвращает строку «недопустимый ввод» .

    • Строка 19: На этот раз, когда вы присоединяете переменную fahrenheit к концу строки HTML, она указывает на возвращаемое значение fahrenheit_from () .Это означает, что в ваш HTML будет добавлена ​​преобразованная температура или строка сообщения об ошибке.

    • Строки 15 и 18: Чтобы упростить использование страницы, вы также добавляете описательные метки Температура Цельсия и Фаренгейта к той же строке HTML.

    Ваша страница будет отображаться правильно, даже если способ добавления этих строк не соответствует действительному HTML. Это работает благодаря мощности современных браузеров.

    Имейте в виду, что если вы хотите глубже погрузиться в веб-разработку, вам нужно будет изучить HTML. Но для развертывания вашего скрипта Python в сети это вполне подойдет.

    Теперь у вас должна быть возможность использовать скрипт преобразования температуры в вашем браузере. Вы можете ввести температуру по Цельсию через поле ввода, нажать кнопку и увидеть, как преобразованный результат по Фаренгейту появится на той же веб-странице. Поскольку вы используете HTTP-запрос GET по умолчанию, вы также можете видеть, что отправленные данные отображаются в URL-адресе.

    Примечание: Фактически, вы даже можете обойти форму и указать собственное значение для градусов Цельсия , указав соответствующий адрес, аналогично тому, как вы могли использовать преобразование, когда вы создавали скрипт без HTML-формы.

    Например, попробуйте ввести URL-адрес localhost: 8080 /? Celsius = 42 прямо в браузере, и вы увидите, что результат преобразования температуры появится на вашей странице.

    Снова разверните готовое приложение в Google App Engine с помощью команды gcloud app deploy .После завершения развертывания перейдите по указанному URL-адресу или запустите приложение gcloud, перейдите по ссылке , чтобы увидеть ваше веб-приложение Python в реальном времени в Интернете. Проверьте это, добавляя различные типы входных данных. Как только вы будете удовлетворены, поделитесь своей ссылкой со всем миром.

    URL-адрес веб-приложения преобразователя температуры по-прежнему выглядит примерно так: https://hello-app-295110.ew.r.appspot.com/ . Это не отражает текущую функциональность вашего приложения.

    Еще раз ознакомьтесь с инструкциями по развертыванию, создайте новый проект в Google App Engine с более подходящим именем и разверните там свое приложение.Это даст вам возможность попрактиковаться в создании проектов и развертывании приложений Flask в Google App Engine.

    На этом этапе вы успешно преобразовали свой скрипт Python в веб-приложение Python и развернули его в Google App Engine для онлайн-хостинга. Вы можете использовать тот же процесс для преобразования большего количества ваших скриптов Python в веб-приложения.

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

    Если вы хотите узнать больше о том, что вы можете делать с Google App Engine, вы можете прочитать об использовании статических файлов и добавить файл CSS в свое веб-приложение Python, чтобы улучшить его общий вид.

    Размещение кода в Интернете может сделать его доступным для большего числа людей через Интернет. Преобразуйте свои любимые скрипты в приложения Flask и покажите их миру.

    Заключение

    В этом уроке вы много узнали! Вы начали с локального скрипта Python и превратили его в удобное для пользователя, полностью развернутое приложение Flask, которое теперь размещено на Google App Engine.

    Работая с этим руководством, вы узнали:

    • Как веб-приложений предоставляют данные через Интернет
    • Как выполнить рефакторинг вашего скрипта Python, чтобы вы могли разместить в сети
    • Как создать базовое приложение Flask
    • Как вручную экранировать пользовательский ввод
    • Как развернуть свой код на Google App Engine

    Теперь вы можете взять свои локальные сценарии Python и сделать их доступными в Интернете для использования во всем мире.Если вы хотите загрузить полный код приложения, созданного в этом руководстве, вы можете нажать на ссылку ниже:

    Если вы хотите узнать больше о веб-разработке с помощью Python, то теперь у вас есть все необходимое для экспериментов с веб-фреймворками Python, такими как Flask и Django. Продолжайте хорошую работу!

    Веб-приложения и фреймворки — Автостопом по Python

    Как мощный язык сценариев, адаптированный как для быстрого прототипирования и более крупные проекты, Python широко используется в веб-приложениях. разработка.

    Контекст

    WSGI

    Интерфейс шлюза веб-сервера (или сокращенно WSGI) является стандартным интерфейс между веб-серверами и фреймворками веб-приложений Python. От стандартизация поведения и связи между веб-серверами и веб-сайтом Python frameworks, WSGI позволяет писать переносимый веб-код Python, который может быть развернут на любом WSGI-совместимом веб-сервере. WSGI задокументирован в PEP 3333 .

    Каркасы

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

    URL-маршрутизация
    Сопоставляет входящий HTTP-запрос с определенной частью кода Python для быть вызванным
    Объекты запроса и ответа
    Инкапсулирует информацию, полученную из браузера пользователя или отправленную ему.
    Механизм шаблонов
    Позволяет отделить код Python, реализующий логику приложения, от HTML (или другой) вывод, который он производит
    Веб-сервер разработки
    Запускает HTTP-сервер на машинах для разработки, чтобы обеспечить быструю разработку; часто автоматически перезагружает серверный код при обновлении файлов

    Джанго

    Django — это веб-сайт «с батарейками» фреймворк приложения и является отличным выбором для создания контент-ориентированных веб-сайты.Предоставляя множество утилит и шаблонов из коробки, Django стремится чтобы сделать возможным быстрое создание сложных веб-приложений на базе баз данных, поощряя при этом передовой опыт написания кода с его использованием.

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

    Ежегодно проводятся конференции по Django в США, Европе и Австралии.

    Большинство новых веб-приложений Python сегодня построено на Django.

    Колба

    Flask — это «микрофреймворк» для Python, отличный выбор для создания небольших приложений, API и веб-сервисов.

    Создание приложения с помощью Flask во многом похоже на написание стандартных модулей Python. за исключением того, что к некоторым функциям прикреплены маршруты. Это действительно красиво.

    Вместо того, чтобы предоставить все, что вам может понадобиться, Flask реализует наиболее часто используемые основные компоненты веб-приложения framework, например маршрутизация URL-адресов, объекты запросов и ответов и шаблоны.

    Если вы используете Flask, вам решать, какие компоненты для вашего приложение, если есть. Например, доступ к базе данных или создание формы и проверка не является встроенной функцией Flask.

    Это замечательно, потому что многим веб-приложениям эти функции не нужны. Для тех, кто это делает, есть много Доступные расширения, которые могут удовлетворить ваши потребности. Или вы можете легко использовать любую библиотеку сами!

    Flask — это выбор по умолчанию для любого веб-приложения Python, которое подходит для Django.

    Сокол

    Falcon — хороший выбор, когда ваша цель для создания быстрых и масштабируемых микросервисов RESTful API.

    Это надежный и высокопроизводительный веб-фреймворк Python для создания крупномасштабных серверные части приложений и микросервисы. Falcon поощряет архитектурный стиль REST сопоставление URI-адресов с ресурсами, стараясь сделать как можно меньше, оставаясь при этом высокоэффективным.

    Falcon выделяет четыре основных направления: скорость, надежность, гибкость и возможность отладки.Он реализует HTTP через «респонденты», такие как on_get () , on_put () и т. Д. Эти респонденты получают интуитивно понятные объекты запросов и ответов.

    Торнадо

    Tornado — асинхронный веб-фреймворк для Python, у которого есть собственный цикл обработки событий. Это позволяет ему изначально поддерживать Например, WebSockets. Хорошо написанные приложения Tornado известны обладают отличными эксплуатационными характеристиками.

    Я не рекомендую использовать Tornado, если вы не думаете, что он вам нужен.

    Пирамида

    Pyramid — очень гибкий каркас с тяжелым сосредоточьтесь на модульности. Поставляется с небольшим количеством библиотек («батарейки»). встроен, и побуждает пользователей расширять его базовую функциональность. Набор из Предоставленные шаблоны cookiecutter помогают пользователям принимать новые решения по проектам. Он поддерживает одну из самых важных частей инфраструктуры Python. PyPI.

    Pyramid не имеет большой пользовательской базы, в отличие от Django и Flask. Это способный фреймворк, но не очень популярный выбор для новой сети Python приложения сегодня.

    Мазонит

    Masonite — это современный и ориентированный на разработчиков веб-фреймворк «с батарейками».

    Фреймворк Masonite следует архитектурному шаблону MVC (модель-представление-контроллер) и в значительной степени вдохновлен такими фреймворками, как Rails и Laravel, поэтому, если вы переходите на Python с фона Ruby или PHP, вы будете чувствовать себя как дома!

    Masonite поставляется с множеством функциональных возможностей из коробки, включая мощный контейнер IOC с автоматическим разрешением инъекций зависимостей, инструменты командной строки для крафта и ORM в стиле активной записи Orator.

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

    FastAPI

    FastAPI — это современный веб-фреймворк для создания API с Python 3.6+.

    Он имеет очень высокую производительность, так как основан на Starlette и Pydantic.

    FastAPI использует стандартные объявления типов Python в параметрах функций. объявлять параметры и тела запроса, выполнять преобразование данных (сериализацию, анализ), проверка данных и автоматическая документация API с OpenAPI 3 (включая JSON Schema ).

    Он включает инструменты и утилиты для безопасности и аутентификации (включая OAuth3 с JWT токены), система внедрения зависимостей, автоматическая генерация интерактивного API документация и другие функции.

    Серверы WSGI

    Автономные серверы WSGI обычно используют меньше ресурсов, чем традиционные веб-серверы. серверы и обеспечивают максимальную производительность.

    Gunicorn

    Gunicorn (Зеленый единорог) — это WSGI на чистом Python сервер, используемый для обслуживания приложений Python.В отличие от других веб-серверов Python, у него продуманный пользовательский интерфейс, он чрезвычайно прост в использовании и настроить.

    Gunicorn имеет разумные и разумные настройки по умолчанию для конфигураций. Однако некоторые другие серверы, такие как uWSGI, намного более настраиваемы и, следовательно, намного сложнее эффективно использовать.

    Gunicorn сегодня рекомендуется для новых веб-приложений Python.

    Официантка

    Официантка — это WSGI-сервер на чистом Python который заявляет о «очень приемлемой производительности».Его документация не очень подробный, но он предлагает некоторые приятные функции, которых нет в Gunicorn (например, буферизация HTTP-запросов).

    Официантка набирает популярность в сообществе веб-разработчиков Python.

    uWSGI

    uWSGI — это полный стек для построения услуги хостинга. Помимо управления процессами, мониторинг процессов, и другие функции, uWSGI действует как сервер приложений для различных языки программирования и протоколы, включая Python и WSGI.uWSG Я могу либо запускаться как автономный веб-маршрутизатор, либо запускаться за полной сетью сервер (например, Nginx или Apache). В последнем случае веб-сервер может настроить uWSGI и работу приложения над протокол uwsgi. Поддержка веб-сервера uWSGI позволяет динамически настраивать Python, передача переменных среды и дальнейшая настройка. Для получения полной информации, увидеть магию uWSGI переменные.

    Я не рекомендую использовать uWSGI, если вы не знаете, зачем он вам нужен.

    Хостинг

    Platform-as-a-Service (PaaS) — это тип инфраструктуры облачных вычислений. который абстрагирует и управляет инфраструктурой, маршрутизацией и масштабированием сети Приложения.При использовании PaaS разработчики приложений могут сосредоточиться на написании код приложения вместо того, чтобы беспокоиться о развертывании подробности.

    Heroku

    Heroku предлагает первоклассную поддержку для Приложения Python 2.7–3.5.

    Heroku поддерживает все типы веб-приложений, серверов и фреймворков Python. Приложения можно разрабатывать на Heroku бесплатно. Как только ваше приложение будет готовый к производству, вы можете перейти на приложение Hobby или Professional.

    Heroku поддерживает подробные статьи по использованию Python с Heroku, а также пошаговые инструкции по как настроить ваше первое приложение.

    Heroku — это рекомендуемый PaaS для развертывания веб-приложений Python сегодня.

    Шаблоны

    Большинство приложений WSGI отвечают на HTTP-запросы для обслуживания содержимого в HTML. или другие языки разметки. Вместо того, чтобы напрямую генерировать текстовый контент из Python, концепция разделения ответственности советует нам использовать шаблоны. А механизм шаблонов управляет набором файлов шаблонов с системой иерархии и включение, чтобы избежать ненужного повторения, и отвечает за рендеринг (генерация) фактического контента, заполнение статическим контентом шаблонов с динамическим контентом, создаваемым приложением.

    Как файлы шаблонов иногда написано дизайнерами или интерфейсными разработчиками, может быть сложно справиться с возрастающей сложностью.

    Некоторые общие передовые практики применяются к части прохождения заявки. динамический контент для механизма шаблонов и самих шаблонов.

    • Файлы шаблонов должны передаваться только динамическим контент, необходимый для рендеринга шаблона. Избегать соблазн передать дополнительный контент «на всякий случай»: при необходимости проще добавить недостающую переменную, чем удалить вероятная неиспользуемая переменная позже.
    • Многие механизмы шаблонов допускают сложные операторы или назначения в самом шаблоне, и многие позволяют оценить некоторый код Python в шаблоны. Это удобство может привести к неконтролируемому усложняются и часто затрудняют поиск ошибок.
    • Часто необходимо смешивать шаблоны JavaScript с HTML-шаблоны. Разумный подход к этому дизайну — изолировать части, в которых шаблон HTML передает некоторое переменное содержимое в код JavaScript.

    Jinja2

    Jinja2 — очень хорошо зарекомендовавший себя шаблонизатор.

    Он использует текстовый шаблонный язык и, таким образом, может использоваться для создания любых тип разметки, а не только HTML. Он позволяет настраивать фильтры, теги, тесты, и глобалы. В нем много улучшений по сравнению с системой шаблонов Django.

    Вот некоторые важные HTML-теги в Jinja2:

     {# Это комментарий #}
    
    {# Следующий тег является выходом переменной: #}
    {{заглавие}}
    
    {# Тег для блока, может быть заменен посредством наследования другим html-кодом #}
    {% block head%}
    

    Это голова!

    {% endblock%} {# Вывод массива в виде итерации #} {% для элемента в списке%}
  • {{item}}
  • {% endfor%}

    Следующие объявления являются примером веб-сайта в сочетании с Tornado веб сервер.Торнадо не очень сложен в использовании.

     # import Jinja2
    из среды импорта jinja2, FileSystemLoader
    
    # import Tornado
    импорт tornado.ioloop
    импорт tornado.web
    
    # Загрузить файл шаблона templates / site.html
    TEMPLATE_FILE = "site.html"
    templateLoader = FileSystemLoader (searchpath = "templates /")
    templateEnv = Среда (загрузчик = templateLoader)
    template = templateEnv.get_template (TEMPLATE_FILE)
    
    # Список для рендеринга известных фильмов
    movie_list = [[1, «Автостопом по Галактике»], [2, «Назад в будущее»], [3, «Матрица»]]
    
    # шаблон.render () возвращает строку, содержащую отрисованный html
    html_output = template.render (список = список_фильмов,
                            title = "Вот мой список любимых фильмов")
    
    # Обработчик главной страницы
    класс MainHandler (tornado.web.RequestHandler):
        def get (self):
            # Возвращает отображаемую строку шаблона в запрос браузера
            self.write (html_output)
    
    # Назначить обработчик корню сервера (127.0.0.1:PORT/)
    application = tornado.web.Application ([
        (r "/", MainHandler),
    ])
    ПОРТ = 8884
    если __name__ == "__main__":
        # Настроить сервер
        заявление.слушать (ПОРТ)
        tornado.ioloop.IOLoop.instance (). start ()
     

    Файл base.html можно использовать в качестве основы для всех страниц сайта, которые например реализовано в блоке контента.

     
    
    
    
        
         {{title}} - Моя веб-страница 
    
    
    
    {# В следующей строке контент с сайта.html шаблон будет добавлен #} {% блокировать содержание%} {% endblock%}
    {% нижний колонтитул%} & копировать; Авторские права 2013 принадлежат вам . {% endblock%}

    Следующий список — страница нашего сайта ( site.html ), загруженная в Python приложение, которое расширяет base.html . Блок содержимого устанавливается автоматически в соответствующий блок на странице base.html .

     {% extends "base.html "%}
    {% блокировать содержание%}
        

    {{title}}

    {{list_title}}

      {% для элемента в списке%}
    • {{item [0]}}: {{item [1]}}
    • {% endfor%}

    {% endblock%}

    Jinja2 — это рекомендуемая библиотека шаблонов для новых веб-приложений Python.

    Хамелеон

    Шаблоны страниц-хамелеонов — это шаблон HTML / XML. реализация движка языка атрибутов шаблонов (TAL), Синтаксис выражения TAL (TALES), и синтаксисы Macro Expansion TAL (Metal).

    Chameleon доступен для Python 2.5 и выше (включая 3.x и PyPy), а также обычно используется Pyramid Framework.

    Шаблоны страниц добавляют в структуру документа специальные атрибуты элементов. и разметка текста. Используя набор простых языковых конструкций, вы управляете документооборот, повторение элементов, замена текста и перевод. Так как синтаксиса на основе атрибутов, неотрисованные шаблоны страниц являются допустимым HTML и могут можно просматривать в браузере и даже редактировать в редакторах WYSIWYG.Это может сделать двустороннее сотрудничество с дизайнерами и создание прототипов со статическими файлами в браузер проще.

    Базовый язык TAL достаточно прост, чтобы понять его на примере:

     
      
      

    Здравствуйте,

    Мир !
    <таблица>

    Шаблон для вставки текста является распространенным достаточно, чтобы, если вам не требуется строгая валидность в необработанных шаблонах, вы можете заменить его более лаконичным и читаемым синтаксисом, в котором используется шаблон $ {выражение} , а именно:

     
      
        

    Привет, $ {world}!

    <таблица> $ {row.capitalize ()} $ {col}

    Но имейте в виду, что полный Текст по умолчанию синтаксис также позволяет использовать содержимое по умолчанию в неотрисованном шаблоне.

    Будучи из мира пирамид, Хамелеон не получил широкого распространения.

    Мако

    Mako — это язык шаблонов, который компилируется в Python. для максимальной производительности. Его синтаксис и API заимствованы из лучших частей других языки шаблонов, такие как шаблоны Django и Jinja2.Это шаблон по умолчанию язык, включенный в сеть Pylons и Pyramid каркасы.

    Пример шаблона в Mako выглядит так:

     <% inherit file = "base.html" />
    <%
        rows = [[v для v в диапазоне (0,10)] для строки в диапазоне (0,10)]
    %>
    <таблица>
        % для строки в строках:
            $ {makerow (строка)}
        % endfor
    
    
    <% def name = "makerow (row)">
        
        % для имени в строке:
             $ {name}  \
        % endfor
        
    
     

    Для визуализации очень простого шаблона вы можете сделать следующее:

     от mako.шаблон импорта шаблон
    print (Шаблон ("привет, $ {data}!"). render (data = "world"))
     

    Mako пользуется большим уважением в веб-сообществе Python.

    Список литературы

    Quickstart: создание веб-приложения Python с помощью Visual Studio

    • 7 минут на чтение

    В этой статье

    В этом 5-10-минутном введении в Visual Studio как Python IDE вы создадите простое веб-приложение Python на основе фреймворка Flask.Вы создаете проект в виде отдельных шагов, которые помогут вам узнать об основных функциях Visual Studio.

    Если вы еще не установили Visual Studio, перейдите на страницу загрузки Visual Studio, чтобы установить его бесплатно. В установщике обязательно выберите рабочую нагрузку Python development .

    Если вы еще не установили Visual Studio, перейдите на страницу загрузок Visual Studio, чтобы установить его бесплатно. В установщике обязательно выберите рабочую нагрузку Python development .

    Создать проект

    Следующие шаги создают пустой проект, который служит контейнером для приложения:

    1. Откройте Visual Studio 2017.

    2. В верхней строке меню выберите File> New> Project .

    3. В диалоговом окне New Project введите «Python Web Project» в поле поиска вверху справа, выберите Web project в среднем списке, дайте проекту имя, например «HelloPython», затем нажмите OK. .

      Если вы не видите шаблоны проектов Python, запустите установщик Visual Studio , выберите Дополнительно > Изменить , выберите рабочую нагрузку Разработка Python , затем выберите Изменить .

    4. Новый проект откроется в обозревателе решений на правой панели. На данный момент проект пуст, потому что он не содержит других файлов.

    1. Откройте Visual Studio 2019.

    2. На начальном экране выберите Создать новый проект .

    3. В диалоговом окне Create a new project введите «Python web» в поле поиска вверху, выберите Web Project в среднем списке, затем выберите Next :

      Если вы не видите шаблоны проектов Python, запустите установщик Visual Studio , выберите Дополнительно > Изменить , выберите рабочую нагрузку Разработка Python , затем выберите Изменить .

    4. В следующем диалоговом окне Configure your new project введите «HelloPython» для Имя проекта , укажите местоположение и выберите Create . (Имя решения автоматически устанавливается в соответствии с именем проекта .)

    5. Новый проект откроется в обозревателе решений на правой панели. На данный момент проект пуст, потому что он не содержит других файлов.

    Вопрос: В чем преимущество создания проекта в Visual Studio для приложения Python?

    Ответ : Приложения Python обычно определяются с использованием только папок и файлов, но эта простая структура может стать обременительной по мере того, как приложения становятся больше и, возможно, включают автоматически сгенерированные файлы, JavaScript для веб-приложений и т. Д. Проект Visual Studio помогает справиться с этой сложностью. Проект (а .pyproj file) идентифицирует все исходные файлы и файлы содержимого, связанные с вашим проектом, содержит информацию о сборке для каждого файла, поддерживает информацию для интеграции с системами управления версиями и помогает вам организовать ваше приложение в логические компоненты.

    Вопрос. Какое «решение» отображается в обозревателе решений?

    Ответ : Решение Visual Studio — это контейнер, который помогает управлять одним или несколькими связанными проектами как группой и хранит параметры конфигурации, не относящиеся к проекту.Проекты в решении также могут ссылаться друг на друга, так что при запуске одного проекта (приложения Python) автоматически создается второй проект (например, расширение C ++, используемое в приложении Python).

    Установите библиотеку Flask

    Веб-приложения

    на Python почти всегда используют одну из многих доступных библиотек Python для обработки низкоуровневых деталей, таких как маршрутизация веб-запросов и формирование ответов. Для этой цели Visual Studio предоставляет множество шаблонов для веб-приложений, один из которых вы будете использовать позже в этом кратком руководстве.

    Здесь вы выполните следующие шаги, чтобы установить библиотеку Flask в «глобальную среду» по умолчанию, которую Visual Studio использует для этого проекта.

    1. Разверните узел Python Environments в проекте, чтобы увидеть среду по умолчанию для проекта.

    2. Щелкните среду правой кнопкой мыши и выберите Установить пакет Python . Эта команда открывает окно Python Environments на вкладке Packages .

    3. Введите «колба» в поле поиска и выберите pip install flask из PyPI . Примите любые запросы на получение прав администратора и наблюдайте за окном Output в Visual Studio, чтобы узнать о ходе выполнения. (Запрос на повышение прав появляется, когда папка пакетов для глобальной среды находится в защищенной области, например C: \ Program Files .)

    1. Разверните узел Python Environments в проекте, чтобы увидеть среду по умолчанию для проекта.

    2. Щелкните среду правой кнопкой мыши и выберите Manage Python Packages … . Эта команда открывает окно Python Environments на вкладке Packages (PyPI) .

    3. Введите «колба» в поле поиска. Если под окном поиска появляется Flask , этот шаг можно пропустить. В противном случае выберите Выполнить команду: pip install flask . Примите любые запросы на получение прав администратора и наблюдайте за окном Output в Visual Studio, чтобы узнать о ходе выполнения.(Запрос на повышение прав появляется, когда папка пакетов для глобальной среды находится в защищенной области, например C: \ Program Files .)

    1. После установки библиотека появится в среде Solution Explorer , что означает, что вы можете использовать ее в коде Python.

    Примечание

    Вместо того, чтобы устанавливать библиотеки в глобальной среде, разработчики обычно создают «виртуальную среду», в которой устанавливают библиотеки для конкретного проекта.Шаблоны Visual Studio обычно предлагают этот вариант, как описано в разделе «Быстрый старт — создание проекта Python с использованием шаблона».

    Вопрос: Где я могу узнать больше о других доступных пакетах Python?

    Ответ : Посетите указатель пакетов Python.

    Добавить файл кода

    Теперь вы готовы добавить немного кода Python для реализации минимального веб-приложения.

    1. Щелкните проект правой кнопкой мыши в обозревателе решений и выберите Добавить> Новый элемент .

    2. В появившемся диалоговом окне выберите Пустой файл Python , назовите его app.py и выберите Добавить . Visual Studio автоматически откроет файл в окне редактора.

    3. Скопируйте следующий код и вставьте его в app.py :

        из колбы импортная колба
      
      # Создайте экземпляр класса Flask, который является приложением WSGI.
      # Первый аргумент - это имя модуля или пакета приложения,
      # обычно __name__ при использовании одного модуля.app = Flask (__ имя__)
      
      # Декораторы маршрутов Flask map / и / hello для функции hello.
      # Чтобы добавить другие ресурсы, создайте функции, которые генерируют содержимое страницы
      # и добавьте декораторы, чтобы определить для них подходящие локаторы ресурсов.
      
      @ app.route ('/')
      @ app.route ('/ привет')
      def привет ():
          # Отрисовываем страницу
          верните "Hello Python!"
      
      если __name__ == '__main__':
          # Запускаем сервер приложений на localhost: 4449
          app.run ('локальный хост', 4449)
        
    4. Вы могли заметить, что диалоговое окно Добавить> Новый элемент отображает много других типов файлов, которые вы можете добавить в проект Python, включая класс Python, пакет Python, модульный тест Python, web.config и многое другое. В общем, эти так называемые шаблоны элементов — отличный способ быстро создавать файлы с полезным стандартным кодом.

    Вопрос: Где я могу узнать больше о Flask?

    Ответ : Обратитесь к документации Flask, начиная с Flask Quickstart.

    Запускаем приложение

    1. Щелкните правой кнопкой мыши app.py в обозревателе решений и выберите Установить как файл запуска .Эта команда определяет файл кода для запуска в Python при запуске приложения.

    2. Щелкните проект правой кнопкой мыши в обозревателе решений и выберите Properties . Затем выберите вкладку Debug и установите для свойства Port Number значение 4449 . Этот шаг гарантирует, что Visual Studio запустит браузер с localhost: 4449 , чтобы соответствовать аргументам app.run в коде.

    3. Выберите Debug> Start Without Debugging ( Ctrl + F5 ), что сохраняет изменения в файлах и запускает приложение.

    4. Появится командное окно с сообщением Running in https: // localhost: 4449 , а в окне браузера должно открыться localhost: 4449 , где вы увидите сообщение «Hello, Python!» Запрос GET также отображается в командном окне со статусом 200.

      Если браузер не открывается автоматически, запустите браузер по вашему выбору и перейдите по адресу localhost: 4449 .

      Если вы видите только интерактивную оболочку Python в командном окне или если это окно кратковременно мигает на экране, убедитесь, что вы установили приложение .py в качестве файла запуска на шаге 1 выше.

    5. Перейдите к localhost: 4449 / hello , чтобы проверить, что декоратор для ресурса / hello также работает. Опять же, запрос GET появляется в командном окне со статусом 200. Не стесняйтесь попробовать какой-нибудь другой URL-адрес, чтобы увидеть, что они показывают коды состояния 404 в командном окне.

    6. Закройте окно команд, чтобы остановить приложение, затем закройте окно браузера.

    Вопрос: В чем разница между командой «Начать без отладки» и «Начать отладку»?

    Ответ : Начать отладку используется для запуска приложения в контексте отладчика Visual Studio, что позволяет устанавливать точки останова, проверять переменные и поэтапно выполнять код построчно.Приложения могут работать медленнее в отладчике из-за различных ловушек, которые делают возможной отладку. Запуск без отладки , напротив, запускает приложение напрямую, как если бы вы запускали его из командной строки, без контекста отладки, а также автоматически запускает браузер и переходит к URL-адресу, указанному на вкладке Debug свойств проекта.

    Следующие шаги

    Поздравляем с запуском вашего первого приложения Python из Visual Studio, в котором вы немного узнали об использовании Visual Studio в качестве Python IDE!

    Поскольку шаги, которые вы выполнили в этом кратком руководстве, носят довольно общий характер, вы, вероятно, догадались, что их можно и нужно автоматизировать.Такая автоматизация — роль шаблонов проектов Visual Studio. Пройдите Быстрый старт — Создайте проект Python, используя шаблон для демонстрации, который создает веб-приложение, подобное тому, которое вы создали в этой статье, но с меньшим количеством шагов.

    Чтобы продолжить изучение более полного руководства по Python в Visual Studio, включая использование интерактивного окна, отладку, визуализацию данных и работу с Git, перейдите к разделу «Учебник: начало работы с Python в Visual Studio».

    Чтобы узнать больше о возможностях Visual Studio, перейдите по ссылкам ниже.

    5 больших и мощных веб-фреймворков Python

    Когда вы создаете серверную часть для веб-сайта или службы, даже если она на первый взгляд кажется скромной, вы можете быстро обнаружить, что это совсем не так. Даже «простой» сайт превращается в улей сложности. Управление пользователями, дизайн данных, отправка форм, безопасность — выполнение всего этого вручную становится утомительным.

    Для больших веб-проектов, когда вы знаете, что вам понадобится все, включая кухонную раковину, лучше всего обратиться к платформе, которая поставляется с батареями (и зарядными устройствами) в комплекте.Вот пять тяжелых веб-фреймворков для Python, которые содержат все необходимое для создания надежных веб-приложений, а также некоторые другие.

    CubicWeb

    CubicWeb позиционируется как «среда семантического веб-приложения, которая способствует повторному использованию и объектно-ориентированному дизайну». Это интригующая система — как заметил Рик Грехан, когда он рецензировал ее для InfoWorld еще в 2011 году, — которая подчеркивает использование абстракций и многоразовых строительных блоков кода, называемых «кубами». Фактически, CubicWeb может быть слишком абстрактным или своеобразным для некоторых разработчиков, а его скорость разработки и набор функций отстают от других фреймворков.

    Кубы — это программные компоненты, которые содержат схему (модель данных), сущности (логику программирования) и представления. Собирая несколько кубов, каждый из которых выполняет свою задачу, вы можете составлять программные приложения, повторно используя свой собственный код и код других.

    По своей сути CubicWeb предоставляет базовые каркасы, используемые каждым веб-приложением: «репозиторий» для подключений и хранения данных; «веб-движок» для базовых HTTP-запросов / ответов и действий CRUD; и схема для моделирования данных. Все это описано в определениях классов Python.

    Для настройки экземпляров CubicWeb и управления ими вы работаете с помощью инструмента командной строки, аналогичного тому, который используется для Django. Встроенная система шаблонов позволяет программно генерировать выходные данные HTML. Вы также можете использовать куб, который предоставляет инструменты для веб-интерфейсов, например, для платформы Bootstrap HTML.

    Хотя CubicWeb поддерживает Python 3 (начиная с версии 3.23), похоже, что он не использует встроенную в Python 3 асинхронную функциональность. Обходным способом включения async было бы использование cubicweb.pyramid, чтобы использовать фреймворк Pyramid в качестве веб-сервера и использовать ответвление Pyramid, использующее асинхронные конструкции. Также возможно выполнять задачи асинхронно с кубом cubicweb-worker. Но что-то более простое пока кажется недосягаемым.

    Для извлечения или управления постоянными данными в приложении CubicWeb вы используете язык запросов отношений (RQL), который использует неопределенно похожий на SQL синтаксис, но построен по образцу SparQL от W3C. Оправдание CubicWeb для этого опять же — абстракция: RQL предоставляет сильно развязанный маршрут для взаимосвязи различных источников данных.

    Поскольку CubicWeb имеет множество зависимостей, лучше всего использовать pip install , чтобы получить их все. Возможно, вам также придется вручную настроить локальную среду. Это отличается от других фреймворков, где все, что требуется, — это запустить pip install или перетащить код фреймворка в подпапку другого проекта. Или вы можете использовать контейнер Docker, чтобы все заработало.

    CubicWeb называет свою обширную документацию «книгой.Авторы книги нашли время, чтобы объяснить необычный подход CubicWeb, продемонстрировать, как создавать некоторые базовые приложения, включать ссылки на API и в целом делать все возможное, чтобы быть конкретными.

    CubicWeb все еще находится в стадии активной, хотя и медленной, разработки. Планы на CubicWeb 4.0 разрабатывались с 2012 года, но пока не были предложены сроки его реализации.

    Django

    За десятилетие и изменения, прошедшие с момента первого появления Django, он стал одной из наиболее широко используемых платформ Python для создания веб-приложений.Django поставляется с почти всеми батареями, которые могут вам понадобиться, что делает его более подходящим для создания больших приложений, чем маленьких.

    Django много лет сидел за версией 1.x. Когда в конце 2017 года появился Django 2.0, он отказался от совместимости с Python 2 в пользу Python 3.4 и выше. Django 3.0, выпущенный в декабре 2019 года, требует Python 3.6 или выше и добавляет поддержку нового асинхронного стандарта ASGI для веб-приложений Python.

    Ключевой частью привлекательности Django является скорость развертывания.Поскольку Django включает в себя так много частей, которые вам нужны для разработки обычного веб-приложения, вы можете быстро приступить к работе. Маршрутизация, парсинг URL, подключение к базе данных, включая ORM (объектно-реляционное сопоставление), проверка формы, защита от атак и создание шаблонов — все это встроено.

    Здесь вы найдете строительные блоки для наиболее распространенных сценариев веб-приложений. Например, управление пользователями можно найти на большинстве веб-сайтов, поэтому Django предлагает его как стандартный элемент. Вместо того, чтобы создавать свою собственную систему для отслеживания учетных записей пользователей, сеансов, паролей, входов / выходов, разрешений администратора и т. Д., Django предоставляет эти функции изначально.Их можно использовать как есть или расширять, чтобы охватить новые варианты использования с минимальными усилиями.

    Django имеет разумные и безопасные настройки по умолчанию, которые помогают защитить ваше веб-приложение от атак. Когда вы помещаете переменную в шаблон страницы, например строку с HTML или JavaScript, содержимое не отображается буквально, если вы явно не обозначите экземпляр переменной как безопасный. Это само по себе устраняет многие распространенные проблемы межсайтового скриптинга. Если вы хотите выполнить проверку формы, вы можете использовать все, от простой защиты CSRF до полноценных механизмов проверки по каждому полю, которые возвращают подробную информацию об ошибках.

    Такой богатый и широкий набор функций, как у Django, не был бы хорош без надежной документации. В документации Django подробно рассматривается каждый аспект фреймворка с разных сторон. Работа с Python 3 или другими разновидностями языка, обеспечение безопасности, реализация общих компонентов веб-приложений (таких как сеансы или разбиение на страницы), создание карт сайта — все это охвачено. Также подробно описаны API-интерфейсы для каждого уровня приложения — модели, представления и шаблона.

    Однако большая мощность сопряжена с большими сложностями. Приложения Django имеют репутацию тяжеловесных приложений с множеством движущихся частей. Даже простое приложение Django требует значительных настроек для запуска. Если ваша цель — сделать немного больше, чем настроить пару простых конечных точек REST, Django почти наверняка окажется излишним.

    У Django тоже есть свои причуды. Например, шаблоны страниц не могут использовать вызываемые объекты. Пример: вы можете передать {{user.name}} как компонент в шаблоне, но не {{user.get_name ()}} . Это один из способов, с помощью которого Django гарантирует, что шаблоны не могут случайно выстрелить вам в ногу, но эти ограничения могут раздражать, если вы не готовы к ним. Хотя есть обходные пути, они, как правило, снижают производительность.

    Начиная с версии 3.0, в Django добавлена ​​поддержка асинхронных представлений. К сожалению, пока нет поддержки асинхронности в других частях стека Django, таких как ORM. Но вы можете развернуть Django с помощью ASGI, чтобы в полной мере использовать асинхронные представления.

    Web2py

    В мире программирования на Ruby Ruby on Rails фактически является веб-фреймворком. Профессор информатики Университета ДеПола Массимо Ди Пьерро был вдохновлен Rails на создание веб-фреймворка на Python, который был так же прост в настройке и использовании. Результат — Web2py.

    Самая большая привлекательность Web2py — это встроенная среда разработки. Когда вы настраиваете экземпляр Web2py, вам предоставляется веб-интерфейс, по сути, онлайн-редактор приложений Python, в котором вы можете настраивать компоненты приложения.Обычно это означает создание моделей, представлений и контроллеров, каждый из которых описывается с помощью модулей Python или HTML-шаблонов. Несколько примеров приложений поставляются с Web2py из коробки. Вы можете разобрать их, чтобы увидеть, как они работают, или использовать их в качестве начальных шаблонов для создания собственных приложений.

    Разработчики обычно развертывают Web2py, загружая его исходный код и опираясь на него. Но для менее технических пользователей Windows или MacOS создатели Web2py предлагают версии, которые по сути являются автономными серверами.Загрузите, распакуйте и запустите одну из этих версий, и у вас будет локальный веб-сервер со встроенной предварительно настроенной копией Web2py. Это хороший способ получить преимущество при создании приложения Web2py, которое затем при необходимости можно развернуть в другом месте.

    Веб-интерфейс Web2py был построен с использованием Bootstrap 4, поэтому он удобен для глаз и удобен в навигации. Встроенный в браузер редактор не заменяет полноценную IDE, но он снабжен полезными вспомогательными средствами, такими как нумерация строк и подсветка синтаксиса Python (включая автоматический отступ).Также включен быстрый веб-интерфейс для оболочки Python, поэтому вы можете взаимодействовать с Web2py из командной строки — приятная уступка для экспертов.

    Система абстракции данных, используемая в Web2py, работает немного иначе, чем ORM Django и другие ORM, созданные на ее основе (например, Peewee). Эти системы используют классы Python для определения моделей, тогда как Web2py использует функции-конструкторы, такие как define_table , для создания экземпляров моделей. Различия, скорее всего, будут резкими, только если вы привыкли к другому; они не должны беспокоить новичков.У вас вряд ли возникнут проблемы с подключением Web2py к поставщику данных, поскольку он взаимодействует практически со всеми существующими крупными базами данных.

    Действительно полезной функцией, связанной с базой данных, в Web2py является возможность генерировать диаграмму моделей, позволяющую визуализировать, как ваши модели связаны друг с другом. Однако вам нужно будет установить библиотеку PyGraphviz, чтобы включить эту функцию.

    Web2py предоставляет множество других компонентов профессионального уровня: функции интернационализации, несколько методов кэширования, контроль доступа и авторизацию и даже интерфейсные эффекты (например, выбор даты в формах) через интегрированную поддержку jQuery и AJAX.Также включены хуки для внешнего и внутреннего промежуточного программного обеспечения, хотя вам не разрешается использовать промежуточное программное обеспечение для замены основных функций Web2py. Однако пока нет явного использования асинхронных функций Python в Web2py, хотя есть планировщик для обработки длительно выполняемых задач.

    Неудивительно, что документацию Web2py называют «книгой». Во-первых, он охватывает ошеломляющее количество материалов по Web2py, Python и средам развертывания, используемым для обоих. Во-вторых, он написан в доступном повествовательном стиле.В-третьих, в нем подробно рассказывается об общих сценариях создания приложений. Например, есть целая глава об использовании jQuery для создания приложений AJAX.

    Weppy

    Weppy чувствует себя на полпути между минимальной простотой Flask и полнотой Django. В то время как разработка приложения Weppy отличается простотой Flash, Weppy имеет множество функций, которые есть в Django, например уровни данных и аутентификация. Таким образом, Weppy подходит для приложений, которые варьируются от очень простых до умеренно сложных.

    На первый взгляд, код Weppy очень похож на код Flask или код Bottle. Для запуска и запуска базового веб-сайта с одним маршрутом требуется несколько инструкций. Маршруты могут быть описаны с помощью декораторов функций (простой способ) или программно, а синтаксис для этого близок к Flask / Bottle. Шаблоны работают примерно так же, за исключением незначительных изменений в синтаксисе.

    Weppy отличается от этих небольших фреймворков тем, что включает некоторые функции, которые они включают только в качестве подключаемых модулей или надстроек.Например, ни Flask, ни Bottle не имеют встроенного ORM или системы управления данными. Weppy включает ORM, хотя и основанный на проекте pyDAL, а не на гораздо более популярном SQLAlchemy. Weppy даже поддерживает миграцию схем, которую Django поддерживает как часть своей ORM (система миграции Django также намного более автоматизирована). Хотя у Weppy есть механизм расширений, список официально одобренных надстроек крошечный, намного меньше, чем каталог расширений для Flask.

    Более легкие фреймворки, такие как Weppy, часто используются для создания RESTful API, и Weppy поставляется с удобными функциями для этой цели.Поместите декоратор @service в маршрут, и возвращаемые вами данные будут автоматически отформатированы в формате JSON или XML по вашему выбору.

    Weppy включает в себя другие функции, которые кажутся более соответствующими более крупной структуре, но реализованы без большого объема. Примеры включают механизмы проверки данных, обработку форм, кэширование ответов и проверку пользователя. Во всех этих случаях Weppy использует подход «ровно столько». Предоставляемые функции не так полны, как в Django и других тяжелых фреймворках, но разработчику не нужно много работать, чтобы сделать их полезными, и они всегда могут быть расширены постфактум.

    Еще одна важная функция фреймворка Weppy — это поддержка интернационализации. Строки в шаблонах можно переводить в соответствии с файлами локали, предоставленными с приложением, которые представляют собой простые словари Python. Выбор языка также может быть установлен путем анализа запроса браузера (то есть HTTP-заголовка Accept-Language) или путем привязки перевода к определенному маршруту.

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

    В долгосрочные планы Weppy входит поддержка async и сокетов как низкоуровневых первоклассных сущностей. Разработчики Weppy планируют представить эти функции в версии 2.0, а затем потребовать Python 3.7 или выше для всех будущих версий Weppy.

    Zope

    Полное руководство по веб-разработке на Python

    Подумайте о наборе инструментов.Веб-фреймворк — это набор пакетов и модулей, состоящий из предварительно написанного стандартизованного кода, который поддерживает разработку веб-приложений, делая разработку быстрее и проще, а ваши программы более надежными и масштабируемыми. Другими словами, фреймворки уже имеют встроенные компоненты, которые «настраивают» ваш проект, так что вам придется выполнять меньше рутинной работы.

    Веб-фреймворки Python используются только в бэкэнде для серверных технологий, помогая в маршрутизации URL-адресов, HTTP-запросах и ответах, доступе к базам данных и веб-безопасности.Хотя использование веб-фреймворка не требуется, его настоятельно рекомендуется использовать, поскольку он помогает разрабатывать сложные приложения за значительно меньшее время.

    Нравится статья? Прокрутите вниз, чтобы подписаться на нашу бесплатную новостную рассылку, выходящую два раза в месяц.


    Какие популярные веб-фреймворки Python?

    Django и Flask, с большим отрывом, являются самыми популярными фреймворками для веб-разработки на Python.

    Django — это веб-фреймворк Python, который предлагает высокоуровневый фреймворк с открытым исходным кодом, который «способствует быстрой разработке и чистому, прагматичному дизайну.«Это быстро, безопасно и масштабируемо. Django предлагает сильную поддержку сообщества и подробную документацию.

    Django невероятно гибок, и вы можете работать с MVP для более крупных компаний. С некоторой точки зрения, некоторые из крупнейших компаний, использующих Django, — это Instagram, Dropbox, Pinterest и Spotify.

    Прочтите руководство по Django, чтобы узнать больше: Что такое Django Python? Создайте свою первую программу с нуля

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

    Flask является минималистичным и легким, что означает, что вы добавляете расширения и библиотеки, которые вам нужны при кодировании, без их автоматического предоставления фреймворком.

    Философия Flask заключается в том, что он предоставляет только компоненты, необходимые для создания приложения, чтобы у вас была гибкость и контроль.

    Flask также является распространенной и мощной веб-платформой, поскольку ее используют такие крупные компании, как Netflix, Linkedin и Uber.

    Другие известные структуры:

    • Пирамида
    • Web2Py
    • турбины

    Что использовать?

    Итак, вы можете спросить себя: какой фреймворк мне выбрать? Ответ в том, что это зависит от обстоятельств. Учитывайте свой уровень квалификации веб-разработчика. Если вы достаточно опытны, подумайте о том, чтобы разработать свою программу с помощью чего-то более «баребонного».”

    В то время как если вы младший разработчик, может быть лучше использовать фреймворк, который обеспечивает больше поддержки, например Django.

    Также спросите себя, вы бы предпочли создать «фундаментальную» кодовую базу или иметь гибкость для создания основы вашей кодовой базы? Если вы предпочитаете первый вариант, используйте Django; если вы предпочитаете второй вариант, используйте Flask.

    В конце концов, они оба могут достичь одной и той же функциональности, и важнее начать писать код, а не беспокоиться о том, какой фреймворк лучше.

    веб-приложений на Python. Начало работы с Django | Садрах Пьер, доктор философии

    Django — это веб-фреймворк с открытым исходным кодом на основе Python, который позволяет легко создавать веб-сайты на основе баз данных. Некоторые примеры сайтов, использующих Django, включают Instagram, Mozilla и Bitbucket.

    В этом посте мы рассмотрим этапы создания простого веб-приложения с помощью Django. Документацию по Django можно найти здесь.

    Приступим!

    Первое, что нам нужно сделать, это убедиться, что у нас установлен Django.Чтобы установить Django, откройте терминал и выполните следующую команду pip:

     pip install django 

    Затем мы можем отобразить версию Django:

     python -m django --version 

    Версия, которую я использую, на время публикации, 2.2.6. Теперь давайте создадим новый каталог на нашем рабочем столе под названием first_site:

     mkdir first_site 
    cd first_site

    Давайте создадим наш проект Django в нашей папке first_site:

     django-admin startproject first_site 

    Мы можем взглянуть при создании структуры файлов мы видим:

    У нас есть ‘manage.py »и каталог проекта Django« first_site ». Файл manage.py — это утилита командной строки, которая позволяет нам выполнять административные задачи.

    Файл __init__.py — это пустой файл, который сообщает python, что наше приложение является пакетом python. Файл «setting.py» позволяет нам изменять настройки и конфигурацию. «Url.py» позволяет нам указать соответствие URL-адресов тому, куда мы отправляем пользователя. «Wsgi.py» используется для обеспечения связи между нашим сервером и веб-приложением.

    Теперь давайте откроем веб-сайт по умолчанию, который поставляется с каждым новым проектом.В нашем терминале мы запускаем:

     python manage.py runserver 

    Мы должны увидеть следующее:

    Мы видим, что наш сайт работает. Мы можем получить доступ к нашему сайту по адресу «http://127.0.0.1:8000/», который соответствует нашему локальному компьютеру. Мы должны увидеть следующее:

    Это веб-сайт по умолчанию, созданный для нас Django. Концепция Django заключается в том, что после создания проекта веб-сайта, который сам по себе является приложением, мы можем создавать дополнительные приложения в нашем веб-приложении.Вы можете рассматривать каждое приложение как отдельный раздел на нашем сайте, например раздел блога, раздел магазина и т. Д. Что хорошо в этой структуре, так это то, что при создании приложения вы можете повторно использовать код в следующем веб-приложении.

    Далее мы создадим приложение для блога для нашего сайта. Сначала нажмите ‘control’ + ‘C’, чтобы убить сервер, на котором запущено наше веб-приложение:

    Затем, чтобы создать наше приложение для блога, мы делаем следующее:

     python manage.py startapp blog 

    Мы можем взглянуть на структуру нашего проекта при создании нашего нового приложения:

    Теперь давайте зайдем в каталог нашего блога и откроем файл views.py ’. Мы должны увидеть следующее:

     from django.shortcuts import render # Создайте здесь свои представления. 

    Давайте также импортируем HttpResponse. Давайте также создадим новую функцию под названием home, которая позволит нам обрабатывать трафик с домашней страницы нашего блога:

     из django.shortcuts import render 
    из django.http import HttpResponsedef home (request):
    return HttpResponse ( '

    Главная страница блога

    ') # Создайте здесь свои просмотры.

    Затем нам нужно сопоставить наш шаблон URL-адреса с этой функцией просмотра.Мы переходим в каталог нашего приложения для блога и создаем новый файл с именем «urls.py». В этот файл мы копируем и вставляем следующее:

     из django.urls, путь импорта 
    из. import viewsurlpatterns = [
    path ('', views.home, name = 'blog-home'),
    ]

    Теперь у нас есть URL-путь для домашней страницы нашего блога, сопоставленный с нашей домашней функцией в файле представлений.

    Чтобы это работало полностью, нам нужно изменить наш модуль urls.py в основном каталоге проекта, first_site. Этот модуль сообщает нашему веб-сайту, какие URL-адреса будут отправлены нам в наше приложение для блога.

    Давайте откроем файл urls.py в нашем каталоге first_site:

     из django.contrib import admin 
    from django.urls import pathurlpatterns = [
    path ('admin /', admin.site.urls),
    ]

    Мы видим, что у нас есть один маршрут, который сопоставляется с URL-адресами нашего административного сайта. Теперь нам нужно указать маршруты, которые сопоставляются с URL-адресами нашего блога. Нам нужно импортировать функцию include из django.urls и добавить дополнительный путь для URL нашего блога:

     из django.contrib import admin 
    from django.путь импорта URL-адресов, includeurlpatterns = [
    path ('admin /', admin.site.urls),
    path ('blog /', include ('blog.urls'))
    ]

    Теперь давайте попробуем запустить сервер. При попытке запустить сервер я часто сталкиваюсь со следующей ошибкой:

    Чтобы устранить эту проблему, выполните:

     ps -ef | grep python 

    и используйте следующее, чтобы убить соответствующий процесс:

     kill -9 processes_id 

    Теперь попробуйте запустить сервер:

     python manage.py runserver 

    Если мы введем http://127.0.0.1:8000/blog/, мы должны увидеть следующее:

    Мы можем продолжить редактировать содержимое домашней страницы блога. Давайте добавим цитату из одного из моих любимых романов, Infinite Jest, Дэвида Фостера Уоллеса:

     из django.shortcuts import render 
    from django.http import HttpResponsedef home (request):
    return HttpResponse ('

    Blog Главная

    Все идентичны в своей тайной невысказанной вере, что в глубине души они отличаются от всех остальных. ')

    Мы также добавим страницу о нашем блоге. В нашем модуле ‘views.py’ определим функцию с именем ‘about’:

     из django.shortcuts import render 
    from django.http import HttpResponsedef home (request):
    return HttpResponse ('

    Blog Home

    Все идентичны в своих тайных негласных убеждениях, что в глубине души они отличаются от всех остальных. ') def about (request):
    return HttpResponse ('

    About Home

    ' )

    Теперь давайте добавим новый путь для нашего раздела about в наших URL-адресах.py ’в нашем приложении блога:

     из django.urls, путь импорта 
    из. import viewsurlpatterns = [
    path ('', views.home, name = 'blog-home'),
    path ('about /', views.about, name = 'blog-about')
    ]

    Теперь, если мы перейдите по адресу http://127.0.0.1:8000/blog/, мы должны увидеть:

    Я остановлюсь на этом, но не стесняйтесь поэкспериментировать с содержимым домашней страницы блога и разделами нашего веб-приложения. Кроме того, отличный ресурс для получения дополнительной информации о Django — это руководства Кори Шафера на YouTube, которые можно найти здесь.

    Подводя итог, в этом посте мы рассмотрели, как создавать веб-приложения и определять маршруты URL-адресов с помощью Django. Сначала мы обсудили конкретные файлы, созданные при создании нового веб-приложения с помощью Django. Затем мы создали приложение для блога в нашем проекте и определили функции просмотра, которые позволяют нам указывать, что видит пользователь. Мы также показали, как добавить дополнительный URL-адрес и просмотреть в нашем приложении блога. Надеюсь, вы нашли этот пост полезным / интересным. Спасибо за чтение!

    16 наиболее важных плюсов и минусов использования Python для веб-разработки

    Знаете ли вы, что Python был назван в честь Монти Пайтона?

    Один из самых популярных языков программирования в мире, Python был впервые концептуализирован в конце 80-х годов под влиянием языков ABC и Modula-3.Он прошел долгий путь от своего первого выпуска в 1991 году до выпуска 2.0, когда он стал проектом с открытым исходным кодом, и по сей день он собирает огромное профессиональное сообщество, которое постоянно совершенствует технологию.

    Некоторые из ведущих компаний используют Python в своих технологических стеках:

    • Instagram — платформа социальных сетей, которая полагается на Python, позволяя своим 4 миллионам активных пользователей ежедневно фотографировать, редактировать, хранить и делиться своими творениями в цифровом формате. альбом.
    • Spotify — крупный игрок на рынке и приложение для потоковой передачи музыки, которое включает в себя аналитику данных для управления функциями Radio и Discover.
    • Disqus — этот плагин комментирования обрабатывает около 50 миллионов комментариев в месяц и доступен в 19 странах.

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

    Python & Django разработка

    Ваш шанс быстрее выйти на рынок

    Популярность Python связана с различными преимуществами, которые он предлагает, такими как простота и элегантность, которые привлекают крупные компании, включая Dropbox, Instagram и Spotify.Однако, несмотря на то, что использование Python для веб-разработки дает много преимуществ, есть и несколько подводных камней. Давай проверим их.

    Содержание

    Есть несколько факторов, которые упрощают использование Python для веб-разработки:

    • Низкий входной барьер
      Python похож на английский язык, который мы используем в повседневной жизни. Простота синтаксиса позволяет вам иметь дело со сложными системами и гарантировать, что все элементы имеют четкую взаимосвязь друг с другом.Благодаря этому больше начинающих программистов могут выучить язык и быстрее присоединиться к сообществу программистов.
    • Хорошая визуализация
      Представление данных в легко понятном формате достигается с помощью различных графиков и диаграмм. Это эффективный способ визуального представления и понимания данных. Компании, занимающиеся веб-разработкой, используют библиотеки Python (например, Matplotlib), которые позволяют визуализировать данные и создавать четкие и простые для понимания отчеты.

    Python невероятно легко читать, поэтому у разработчиков обычно нет проблем с пониманием кода, написанного их коллегами-программистами.Это делает общение между разработчиками, работающими над одним проектом, намного более эффективным. А работа становится еще проще благодаря удобной IDE для разработки на Python.

    Написание и поддержка асинхронного кода с использованием Python не требует больших усилий, так как нет взаимоблокировок, разногласий в исследованиях или любых других сбивающих с толку проблем. Каждая единица такого кода запускается отдельно, что позволяет быстрее справляться с различными ситуациями и проблемами.

    По сравнению с другими языками программирования, такими как Java, Python имеет менее ограниченный подход к программированию.Он имеет несколько парадигм и может поддерживать множество стилей программирования, включая процедурные, объектно-ориентированные и функциональные. Это делает Python отличным языком для стартапов, поскольку вам может потребоваться изменить свой подход в любой момент.

    Вот что это дает:

    • Быстрая разработка.
      Python — это не только один из наиболее быстро развивающихся языков программирования, но и тот, который позволяет быстро создавать прототипы и итерации. Это делает работу разработчиков проще и продуктивнее.Это также делает Python отличным языком для стартапов, поскольку зачастую более быстрое время вывода на рынок означает большее конкурентное преимущество.
    • ООП становится проще.
      Объектно-ориентированное программирование, также известное как ООП, — это парадигма, которая объединяет различные поведения и свойства в несколько объектов и классов. У каждого из этих классов есть функция, поэтому, если в какой-то части кода возникает ошибка, другие части не затрагиваются. В Python работа ООП значительно упрощена, что делает разработку менее затратной и трудоемкой.
    • Богатая стандартная библиотека и экосистема.
      Библиотеки Python содержат огромное количество заранее написанного кода. Таким образом, разработчикам не нужно тратить время на создание основных элементов. Эти библиотеки также позволяют программистам обрабатывать и преобразовывать данные, необходимые для непрерывной обработки данных в машинном обучении (ML).

    Python — популярный выбор для корпоративных программных приложений, во многом благодаря его плавной интеграции с другими языками, традиционно используемыми в корпоративной разработке, такими как Java, PHP и.СЕТЬ.

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

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

    Еще одна хорошая вещь в Python — это то, что он имеет множество фреймворков, упрощающих процесс разработки. В зависимости от того, что вы делаете, вам могут понадобиться разные фреймворки.

    Давайте взглянем на самые известные фреймворки Python.

    • Django
      Эта структура отлично подходит для полноценных веб-приложений и масштабируемых проектов среднего уровня. Он имеет встроенные функции и позволяет повторно использовать код, согласованно изменять различные компоненты кода и другие функции, упрощающие веб-разработку. Django хорошо работает с Oracle SQL, PostgreSQL, MySQL и другими известными базами данных.
    • Pyramid
      С этой структурой вы можете начать с малого и при необходимости масштабировать.Pyramid может использоваться с различными базами данных и приложений или расширяться с помощью плагинов — разработчики могут добавлять любые функции, которые им нужны. Это удобно, когда вам нужно реализовать различные решения в одной задаче.
    • TurboGears
      TurboGears состоит из нескольких компонентов, таких как Repoze, WebOb и Genshi, и основан на архитектуре MVC. Это хорошо для быстрой и эффективной разработки веб-приложений, которые к тому же более удобны в обслуживании. С помощью этой структуры вы можете писать небольшие или сложные приложения, используя режимы с минимальным или полным стеком соответственно.
    • Flask
      Философия этого фреймворка заключается в предоставлении простого и управляемого решения, которое можно легко настроить. Flask определяет себя как микрофреймворк и чаще всего применяется к небольшим решениям, основным приоритетом которых является бережливая функциональность. Фреймворк также используется для создания прототипов.

    Существует множество пакетов и библиотек, доступных для разработки научных и числовых приложений, а также наборов инструментов (например, VTK 3D и MayaVi), отдельной библиотеки изображений и многих других инструментов.Наиболее часто используемые из них:

    Технологии машинного обучения (ML) и искусственного интеллекта (AI) привлекают все больше внимания, поэтому все больше разработчиков пытаются включить их в различные проекты. Это возможно, если вы используете правильный язык.

    По словам Жана Франсуа Пьюже, представителя отдела машинного обучения IBM, Python является лучшим языком для проектов машинного обучения и искусственного интеллекта, и многие разработчики согласны с этим. Python имеет эффективные пакеты машинного обучения, инструменты для визуализации результатов и выходит далеко за рамки анализа данных и других функций, которые приносят пользу в этой области приложения.

    Благодаря тесной интеграции с C, C ++ и Java, Python может пригодиться для написания сценариев приложений. Разработанный для встраивания с самого начала, он может быть очень полезен для настройки больших приложений и создания для них расширений.

    Python используется в автоматизации тестирования. Многие специалисты по автоматизации QA выбирают Python из-за его простой кривой обучения — он также отлично подходит для тех, у кого более ограниченный технический опыт — сильное сообщество, четкий синтаксис и удобочитаемость.У Python даже есть простые в использовании фреймворки для модульного тестирования (например, с его помощью вы можете выполнять тестирование геолокации для мобильных приложений).

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

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

    Одним из преимуществ использования Python для серверных сценариев является его простой синтаксис, как упоминалось выше, который значительно ускоряет процесс. Код состоит из функциональных модулей и связей между ними, что позволяет выполнять алгоритм программы на основе действий пользователя. Python также поддерживает графические пользовательские интерфейсы, необходимые для веб-разработки.

    Python обладает достойными возможностями для динамической семантики и быстрого прототипирования, что возможно благодаря его интерактивности и переносимости.Его можно легко встроить в широкий спектр приложений, даже в те, которые используют разные языки программирования. Следовательно, вы можете легко исправлять новые модули и расширять базовый словарный запас Python. Он может соединять разные компоненты. Неудивительно, что его иногда называют «клеевым языком».

    Несмотря на преимущества Python, у него есть и недостатки, о которых следует помнить, если вы планируете использовать этот язык в своем проекте.

    Когда вам нужно создать приложение, вы, безусловно, захотите, чтобы его сделали самые опытные разработчики.Однако с Python все не так просто, поскольку с этим языком работают не так много опытных программистов, особенно если сравнивать его с Java.

    Многопроцессорность — важная часть написания приложения. Python поддерживает многопроцессорность, хотя он может быть не таким гибким или удобным, как другие языки. Это может создать определенные ограничения при написании кода.

    Python часто критикуют за его скорость. Это интерпретируемый язык сценариев, что делает его относительно медленнее, чем многие его скомпилированные аналоги, такие как C / C ++ или Java, из-за различных методов, которые он использует для перевода кода.Тем не менее, некоторые тесты Python работают быстрее, чем тесты C и C ++.

    При этом не только Python имеет потенциальные проблемы со скоростью. Ruby, Perl и даже JavaScript также находятся на более медленном конце шкалы.

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

    Это неплохой язык для мобильной разработки. Просто несколько компаний используют его для этой цели, предпочитая нативную разработку для iOS и Android или разработку на React Native.По той же причине вам, вероятно, будет сложно нанять разработчиков с опытом разработки мобильных приложений на Python. Просто он не так популярен, как другие технологии в этой сфере.

    Нужны собственные или кроссплатформенные мобильные приложения

    ?

    Наймите надежного технического партнера.

    Python — это язык, известный гибкостью своих типов данных. Это приводит к довольно высокому потреблению памяти и делает неудобным его использование для задач, интенсивно использующих память.

    Python имеет динамическую типизацию, что означает, что он выполняет определенные задачи во время выполнения приложения, которые в противном случае выполнялись бы на языке со статической типизацией. Это накладывает некоторые ограничения на дизайн. Если ваш дизайн загружен элементами, это может остановить работу программы и помешать ее бесперебойной работе.

    Еще одна вещь, о которой вы должны знать, рассматривая Python для своего проекта, — это то, что параллелизм и параллелизм не предназначены для элегантного использования в Python. Из-за этого дизайн может выглядеть не так изысканно, как вам хотелось бы.

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

    Он признан одним из лучших языков программирования для стартапов, и легко понять почему, если сравнить преимущества Python и то, что такое стартапы. Стартапы постоянно ищут уверенности и снижения рисков, у них ограниченные ресурсы и им нужно пространство для роста.С другой стороны, Python гибок и легко масштабируется, не требует большой команды и может использоваться для создания прототипов и MVP.

    Django Stars, компания, занимающаяся веб-разработкой Python, использует этот язык много лет. Мы реализовали различные сложные проекты и имеем ряд успешных примеров в таких сферах, как электронная коммерция, недвижимость и финансы. К ним относятся:

    • PADI Travel — платформа электронной коммерции и бронирования путешествий, используемая дайверами со всего мира.

    Глобальная платформа бронирования для водителей с
    широчайшим выбором лайвбордов, дайв-курортов и
    дайв-центров по всему миру.

    • Sindeo — платформа по недвижимости, предоставляющая информацию о кредиторах и ипотеке.
    • MoneyPark — швейцарская компания, предоставляющая индивидуальные финансовые консультации по вопросам страхования и ипотеки.

    Первый независимый поставщик
    индивидуальных финансовых консультаций по ипотечным и страховым продуктам
    в Швейцарии.

    Итак, в какой бы сфере вы ни работали, Python стоит вашего внимания. Он предлагает простые решения без лишних деталей, экономит время и обеспечивает высокий уровень безопасности.

    Python используется и пользуется доверием многих известных компаний. Некоторые из крупнейших и пользующихся наибольшим доверием мировых фирм используют Python в качестве основного языка программирования вместе с платформой Django.