You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

构建Web版Todo App时遭遇SyntaxError错误的解决咨询

解决Web待办应用的SyntaxError问题

错误原因

你导入的functions模块并非你自己编写的待办处理模块,而是虚拟环境site-packages目录下第三方库的functions.py——这个文件使用了Python 2的语法(lambda中的元组解包lambda (k, v): ...),而Python 3已不再支持这种写法,因此触发语法错误。

解决步骤

  • 1. 确保自定义待办模块存在并正确实现
    你需要有一个自己的功能模块,和webbb.py放在同一目录,里面实现get_todos()函数来读取todos.txt。示例代码(可将文件命名为todo_functions.py避免命名冲突):

    # todo_functions.py
    def get_todos(filepath="todos.txt"):
        try:
            with open(filepath, "r", encoding="utf-8") as file:
                todos = file.readlines()
            # 过滤空行并去除每行末尾的换行符
            return [todo.strip() for todo in todos if todo.strip()]
        except FileNotFoundError:
            # 文件不存在时返回空列表
            return []
    
  • 2. 修正导入语句,避免模块冲突
    由于第三方库的functions模块导入优先级可能高于你自定义的模块,直接修改导入语句使用改名后的自定义模块:

    import todo_functions as functions
    
  • 3. 补充Streamlit的导入语句
    你的代码中使用了st.title()但未导入Streamlit,这会导致后续运行报错,必须在代码开头添加:

    import streamlit as st
    

修正后的完整webbb.py代码

import streamlit as st
import todo_functions as functions

todos = functions.get_todos()

st.title("My TO-DO App")

for todo in todos:
    st.checkbox(todo)

额外检查

  • 确保todos.txt和webbb.py在同一目录,文件内每行写一个待办事项
  • 使用命令streamlit run webbb.py启动Web应用

内容的提问来源于stack exchange,提问作者Jisna Mol

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 10:42:18