streamlit 简单使用

import streamlit as st

# 初始化计数器
if 'counter' not in st.session_state:
    st.session_state.counter = 0

# 显示当前计数
st.write(f"Count: {st.session_state.counter}")

# 增加计数
if st.button('Increment'):
    st.session_state.counter += 1
st.session_state 是 Streamlit 库中的一个特性,用于在多个运行实例之间持久化状态。它允许你在 Streamlit 应用程序中保存和更新变量的状态,使得这些变量可以在不同的运行周期(每次用户交互或页面刷新)之间保持其值。
用途
保存用户输入:例如,保存用户的表单输入、选择等。
维护状态:例如,保存应用的状态(如当前页面、模式等)。
跟踪历史记录:例如,保存聊天记录、交易记录等。

 

import streamlit as st

# 初始化计数器
if 'counter' not in st.session_state:
    st.session_state.counter = 0

# 显示当前计数
st.write(f"Count: {st.session_state.counter}")

# 增加计数
if st.button('Increment'):
    st.session_state.counter += 1
在这个例子中:
初始化状态:首先检查 st.session_state.counter 是否存在,如果不存在则初始化为 0。
显示状态:在页面上显示当前的计数值。
更新状态:当用户点击“Increment”按钮时,计数值增加 1。
特性
自动持久化:st.session_state 中的数据会自动保存并在用户刷新页面或重新启动应用时恢复。
多用户支持:每个用户会话都有独立的 st.session_state,因此不同用户之间的状态是隔离的。
灵活性:可以存储任何类型的 Python 对象。
注意事项
内存消耗:长时间运行的应用可能会消耗大量内存,特别是当有大量用户同时在线时。
清理机制:Streamlit 提供了一些方法来清理不再需要的状态,例如使用 del st.session_state[key] 删除某个键。

import streamlit as st

# 初始化一些状态
if 'counter' not in st.session_state:
    st.session_state.counter = 0

if 'name' not in st.session_state:
    st.session_state.name = 'John Doe'

# 显示所有状态键
st.write("Current keys in session state:")
for key in st.session_state.keys():
    st.write(key)

st.session_state.keys() 返回一个包含 st.session_state 字典中所有键的视图对象。这在你需要获取 st.session_state 中所有键名时非常有用,通常用于遍历或检查状态中有哪些变量。


使用场景
调试:在开发过程中,你可以使用 st.session_state.keys() 来检查哪些状态变量已经被定义。
清理:如果你想要删除某些状态变量,可以通过获取所有键然后逐个删除。
动态操作:如果你需要根据状态变量的存在与否来动态改变应用的行为,可以先检查 st.session_state.keys()。

 

import streamlit as st

# 创建一条消息
with st.chat_message("user"):
    st.write("Hello, how can I assist you today?")

# 创建另一条消息
with st.chat_message("assistant"):
    st.write("I can help you with information, answer questions, and more!")


st.chat_message 是 Streamlit 库中的一个函数,用于在聊天应用中创建和显示消息。它可以用来模拟聊天对话的界面,特别是在构建聊天机器人或实时聊天应用时非常有用。


功能说明
创建消息:使用 with st.chat_message(role) 来创建一个消息容器。
显示消息内容:在消息容器内使用 st.write(content) 来显示消息文本。
动态更新:当新的消息被添加时,页面会自动更新以显示最新的消息。
if prompt := st.chat_input():


if prompt := st.chat_input(): 是 Python 中使用的一种简洁的语法结构,称为“walrus operator”(海象运算符),它允许你在条件表达式中同时赋值和检查一个变量。这种语法在 Streamlit 的聊天应用中特别有用,因为它可以方便地处理用户输入。
语法解释
walrus operator (:=):这个运算符允许你在表达式中给变量赋值,同时返回赋值的结果。在条件语句中尤其有用。
st.chat_input():这是 Streamlit 库中的一个函数,用于获取用户在聊天框中的输入。如果用户提交了输入,st.chat_input() 将返回这个输入字符串;如果没有输入或用户没有提交,它将返回 None


import streamlit as st

# 用户输入
if prompt := st.chat_input("Enter your message:"):
    st.write(f"You said: {prompt}")
详细解释
获取用户输入:st.chat_input("Enter your message:") 在聊天框中等待用户输入,并在用户提交后返回输入的文本。
条件判断:if prompt := st.chat_input("Enter your message:"):
如果用户提交了输入,st.chat_input() 返回非空字符串,prompt 被赋值为这个字符串,并且条件为真,执行下面的代码块。
如果用户没有提交输入或者提交的是空字符串,st.chat_input() 返回 None 或空字符串,条件为假,不执行下面的代码块。
优点
简洁性:使用 walrus operator 可以让你的代码更简洁,减少不必要的行数。
逻辑清晰:这种方式使得条件判断和赋值逻辑更加清晰,易于阅读和理解。
总结
if prompt := st.chat_input(): 是一种简洁而有效的方式,在 Streamlit 聊天应用中处理用户输入。它结合了 walrus operator 和 st.chat_input() 函数,使得代码更加紧凑和易于理解。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值