test: 博客美化中……

python之局部变量引用赋值前的结果

通过正则表达式,实现加减

 

  昨晚在做计算器的时候,被一个BUG搞懵比了。现在再看看,发现我好小白啊~~

 

 

复制代码
 1 #8+5+65
 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赋值前的结果。

 

 

转发注明出处,谢谢。

 

posted @   前程明亮  阅读(4178)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示