Python(Web时代)- 超简单:一行代码就能搭建网站

发布时间 2023-09-20 21:13:24作者: Raul2018

From: https://mp.weixin.qq.com/s/x2dJshrAdev4FweK4kwCyA

-----------------------------------------------------------------------------------

Streamlit是一款非常强大,可以实现快速创建和共享数据应用的Python库。借助他,我们可以在数分钟内构建出功能齐全的Web应用程序

 

相较而言,它比django、flask、pelican等建站工具来得快。比如我们只想要展示些简单的东西,如:收集一些歌曲,展示一些图片等

 

优点

  • 交互性Streamlit的设计理念是以数据科学家和工程师为中心,它提供了构建交互性数据应用程序的框架。相反,Pelican和Vuepress更多的是静态网站生成器,它们更专注于内容呈现,而不是用户交互。 

  • 编程语言Streamlit是使用Python编写的,让你可以用Python编写前端

  • 即时刷新:Streamlit提供了即时刷新功能,这意味着每当输入数据发生变化时,相关的结果会立即更新。 

  • 易用性:Streamlit操作简单,代码结构清晰,且具有许多内置的功能,如表格、图形和映射,让用户能够无需许多前端知识就能构建复杂的数据应用程序。

  • 定制性:Streamlit 的组件机制可以自定义UI的显示,既可以使用内置的一些组件比如按钮、输入框、表格等等,也可以使用自定义的React组件,更加的灵活自由。

 

 

安装

pip install streamlit

 

创建项目

 

Streamlit的Hello World

在安装完成后,我们可以创建一个简单的Streamlit网页应用,仅需几行代码就可以呈现出一段文本。

import streamlit as st
st.title('Hello World')

 

运行

只需运行 `streamlit run [你的Python脚本名字].py`命令,即可打开一个新的浏览器窗口显示出我们编写的"Hello World"标题。(注:第一次运行,需要输入一个电子邮箱

Image

 

 

效果

Image

 

以上一个简单的网站就搭建好了!!!

 

 

 

交互性

Streamlit的一个核心特性就是可以快速添加交互式功能。包括按钮、选框、滑块等等。同样,我们只需几行代码就可以创建一个带有滑动条的应用

 

代码示例

import streamlit as st
st.title('Hello World')
x = st.slider('请选择一个值')st.write(x, '该值的平方是:', x * x)

 

输出结果

Image

 

 

在这个应用中,滑动条可以让用户选择一个值,而应用则会显示这个值的平方。

 

 

数据的展示

Streamlit可以特别方便地展现和处理数据。比如,我们可以轻易地导入pandas库来处理数据并以表格形式展示

 

代码示例

import streamlit as stimport pandas as pd
st.title('Hello World')
x = st.slider('请选择一个值')st.write(x, '该值的平方是:', x * x)
data = pd.DataFrame({ 'Name': ['张三', '李四', '王五'], 'Age': [20, 21, 19]})
st.write(data)

 

 

输出结果

Image

 


运行上述代码,我们就会在网页上看到多出一个清晰的数据表格!!!

 

 

 

缓存

如果你的Web应用需要处理大规模数据或进行复杂运算,那么Streamlit的@st.cache_data装饰器会是一个好帮手。加了它,函数的运算结果会被缓存,直到检测到输入值变化,才会重新运算。有了它,我们就不用每次刷新页面,都要等待耗时运算了。

 

代码示例

import pandas as pdimport time
st.title('Hello World')
@st.cache_datadef cal(n): time.sleep(3) return pd.DataFrame({ 'Number': list(range(n)), })

n = st.slider('请选择一个数值:', 0, 10)st.write(cal(n))

 

 

输出结果

Image

 

 

总结:简单、快速、易用,这就是Streamlit !!!