Python生成HTML报告时提示jeden_watek未定义报错如何解决
报错根本原因
两个问题同时导致Pylance报未定义错误:
- 你把Python赋值语句直接写在了三引号包裹的HTML字符串内部,字符串内的所有内容都会被识别为普通文本,不会被Python解释器当作可执行代码运行,自然无法识别变量。
- 你的
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
相关产品推荐
相关产品推荐

