python之局部变量引用赋值前的结果
通过正则表达式,实现加减
昨晚在做计算器的时候,被一个BUG搞懵比了。现在再看看,发现我好小白啊~~
1 #8+5+6-5 2 num = input("please input:") 3 sa = re.split(r'(\D)', num) #区配到非数字则分割 4 5 6 def func(s): 7 #result = 0 8 if s[1] == '+': 9 result = int(s[0]) + int(s[2]) 10 elif s[1] == '-': 11 result = int(s[0]) - int(s[2]) 12 13 for i in range(3): # 去掉前三个 14 s.remove(s[0]) 15 16 s.insert(0, result) #BUG:Local variable 'result' might be referenced before assignment more..局部变量引用赋值前的结果 17 print(s) 18 19 if len(s) == 1: 20 print(result) 21 else: 22 func(s) 23 24 func(sa)
注意第16行!!!
其实我昨晚运行的时候是有显示有BUG的:
UnboundLocalError: local variable 'result' referenced before assignment
但是今天运行竟然没有显示错误了!邪了~
但是不管怎样,pycharm 16行那里result都有下划线,提示:
Local variable 'result' might be referenced before assignment
怎么解决呢?
我早上又起来试试,在第7行加上result = 0,就可以了!
因为(我觉得)if/elif……里面都是一个范围 ,有对result进行赋值,但在if/elif……外面是看不到的。
相当于局部变量s 引用了变量result赋值前的结果。
转发注明出处,谢谢。
作者:前程明亮
出处:http://www.cnblogs.com/0zcl
文章未标明转载则为原创博客。欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
出处:http://www.cnblogs.com/0zcl
文章未标明转载则为原创博客。欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
1.非系统的学习也是在浪费时间
2.做一个会欣赏美,懂艺术,会艺术的技术人
标签:
python基础
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?