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

Python生成HTML报告时提示jeden_watek未定义报错如何解决

报错根本原因

两个问题同时导致Pylance报未定义错误:

  1. 你把Python赋值语句直接写在了三引号包裹的HTML字符串内部,字符串内的所有内容都会被识别为普通文本,不会被Python解释器当作可执行代码运行,自然无法识别变量。
  2. 你的jeden_watek列表是定义在main()函数内部的局部变量,函数执行结束后外部全局作用域默认无法访问这个变量,就算把那行赋值代码移到字符串外面,依然会触发未定义错误。
修复方案

按以下两步调整即可:

  • 第一步:调整变量作用域,保证生成HTML时可以拿到测试结果值。你可以选择把存储测试结果的列表定义在全局作用域,或者在main函数执行结束后把结果return到外部。
    调整后的测试代码参考:
    import timeit
    
    liczby = [159]
    # 把存储结果的列表移到全局作用域,保证后续生成HTML时可访问
    jeden_watek = []
    cztery_watki = []
    cztery_procesy = []
    cpu_procesy = []
    
    def For1Thread():
        # 此处替换为你自己的单线程测试逻辑
        return sum(liczby)
    
    def main():
        for _ in range(5):
            start1 = timeit.timeit(For1Thread, number=1)
            czas_dla_1_watek = round(start1, 3)
            jeden_watek.append(czas_dla_1_watek)
            print(f' Time taken with 1 thread: {start1: .3f} second(s)')
    
    if __name__ == "__main__":
        # 先执行测试逻辑,填充结果列表
        main()
    
  • 第二步:不要在HTML字符串内部写Python代码,先在字符串外部完成变量赋值、函数调用的逻辑,再通过f-string格式化语法把动态值嵌入到HTML内容中。
    正确的HTML生成代码参考:
    # 所有变量赋值、函数调用都写在字符串外部
    value1 = str(jeden_watek[0])
    # 用f前缀标记格式化字符串,需要插入动态值的位置用{变量名/函数调用}占位
    html_raport = f'''
    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>性能测试报告</title>
    </head>
    <body>
        <p>单线程首次测试耗时:{value1} 秒</p>
        <!-- 其余HTML内容按相同规则插入动态值即可,调用自定义方法直接写在花括号内,例:{your_custom_func(参数)} -->
    </body>
    </html>
    '''
    

提示:如果HTML内容比较复杂,也可以用标准库的字符串模板、或者str.format()方法做内容拼接,核心逻辑都是先拿到动态计算的结果,再插入到HTML文本的对应位置,不要尝试在字符串文本内部写执行逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 14:48:23