Python中有哪些你觉得超级牛的模块?

一个完整的应用往往由前端、后端组成,对于Python开发同学而言,大多数时间都集中在后端开发过程中,例如,数据分析、机器学习、深度学习等等。

但是,当想要实现一套完整的应用,用于面相其他用户提供交互时就比较困难了,把Python代码直接打包给其他人用显然是不合理的。

话说回来,作为一名Python开发同学,本职工具就应该聚焦于数据、算法处理方面,如果再额外学前端、应用部署等内容成本就会高很多。

今天就来给大家介绍一款Python开源工具包,能够轻松解决这个问题,快速实现完整应用的搭建。

Taipy

Taipy是一个开源的Python工具包,可以用于构建Web应用程序的前端和后端,使用非常简单,目前在Github已经有超过1.1K Star

下面就来介绍一下这款工具到底该如何使用。

安装

和Python其他工具包一样,可以直接通过pip命令进行安装:

$ pip install taipy

简单示例

通过上面一行命令就完成安装了,下面通过一个简单示例来看一下它如何使用。

from taipy import Gui

excitement_page = """
# Welcome to Taipy
### How excited are you to try Taipy?

<|{excitement}|slider|min=1|max=100|>

My excitement level: <|{excitement}|>
"""
excitement = 100

Gui(page=excitement_page).run()

这里简单解释一下上面代码,首先是导入taipy工具包,然后定义一个页面,这个页面包含几部分信息:

  • 一级标题
  • 三级标题
  • 滑动条
  • 变量显示

然后运行代码就可以了。

动图封面

场景

通过前面的例子已经大概知道Taipy这款工具包怎么用了,下面来介绍一个Taipy中非常重要的概念:场景

Taipy场景(Scenario)表示具有一致数据和参数的业务问题,场景包含可提交执行的有向无环图(或DAG), 场景DAG是一组将数据节点连接在一起的任务。 它也可以通过定义一个序列来分解成更小的图来执行。

序列是从场景的任务集派生的连接任务的子集,形成了可以与场景DAG分开提交的较小的可执行DAG。

场景还可以包含一组不属于场景DAG的附加数据节点,表示与场景相关的附加数据。

下面就通过代码实现实现一套场景执行图:

def filter_genre(initial_dataset: pd.DataFrame, selected_genre):
    filtered_dataset = initial_dataset[initial_dataset['genres'].str.contains(selected_genre)]
    filtered_data = filtered_dataset.nlargest(7, 'Popularity %')
    return filtered_data

结果:

最佳实践

到这里,已经对UI创建、场景这些基本用法有了基本的认识,下面就来上升一下,全面的实现一套应用程序。

下面,首先实现场景创建过程:

import taipy as tp
import pandas as pd
from taipy import Config, Scope, Gui

# Taipy场景和数据管理

# 筛选函数
def filter_genre(initial_dataset: pd.DataFrame, selected_genre):
    filtered_dataset = initial_dataset[initial_dataset["genres"].str.contains(selected_genre)]
    filtered_data = filtered_dataset.nlargest(7, "Popularity %")
    return filtered_data

# 加载Taipy配置
Config.load("config.toml")
scenario_cfg = Config.scenarios["scenario"]

# 启动服务
tp.Core().run()

# 创建一个场景
scenario = tp.create_scenario(scenario_cfg)

接下来再定义用户界面:

# Taipy用户界面

# 定义一个回调函数
def on_genre_selected(state):
    scenario.selected_genre_node.write(state.selected_genre)
    tp.submit(scenario)
    state.df = scenario.filtered_data.read()

# 获取候选项列表
genres = [
    "Action", "Adventure", "Animation", "Children", "Comedy", "Fantasy", "IMAX"
    "Romance","Sci-FI", "Western", "Crime", "Mystery", "Drama", "Horror", "Thriller", "Film-Noir","War", "Musical", "Documentary"
    ]

# 初始化变量
df = pd.DataFrame(columns=["Title", "Popularity %"])
selected_genre = "Action"

## 定义初始化动作
def on_init(state):
    on_genre_selected(state)

# 用户UI定义
my_page = """
# Film recommendation

## Choose your favorite genre
<|{selected_genre}|selector|lov={genres}|on_change=on_genre_selected|dropdown|>

## Here are the top seven picks by popularity
<|{df}|chart|x=Title|y=Popularity %|type=bar|title=Film Popularity|>
"""

Gui(page=my_page).run()

下面按一下结果:

动图封面

这样就实现了一套完整的web应用,如果有服务器的话还可以进行持久化部署,感兴趣的同学可以试一下。

  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

熬夜写代码的平头哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值