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

摘要:
通过正则表达式,昨晚我在使用计算器时被一个错误搞糊涂了。事实上,当我昨晚运行时,显示了一个bug:UnboundLocalError:localvariable“result”referencedb重新分配,但今天没有显示错误!然而,pycharm16的第16行中的结果有一个下划线,这表明:如何在赋值之前解决局部变量“result”可能被引用的问题?我早上起床再试一次。在第7行中添加result=0,就可以了!内部有一个范围,并分配了结果,但如果/elif,则无法在外部看到。相当于局部变量s在赋值变量结果之前引用结果。转发应注明来源,谢谢。

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

昨晚在做计算器的时候,被一个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赋值前的结果。

转发注明出处,谢谢。

免责声明:文章转载自《python之局部变量引用赋值前的结果》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Hibernate-在Eclipse(Oxygen)中安装Hibernatetools插件10.openldap备份与恢复下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Ubuntu Error: No module named 'apt_pkg' 怎么办?

版权声明:任何博客都可以转载,但必须标注来源 https://blog.csdn.net/nikoong/article/details/79612615 ubuntu经常用要添加PPA源,就是使用如下命令: sudo add-apt-repository ppa:XXX 但不知什么时候开始,就出现了错误Error: No module named '...

《中小学生Python编程入门指南》前言

只是在一次偶然的接触中了解到,其实有很多家长想让小孩学习编程,觉得是未来的一个方向。我不懂未来的方向是怎么分析出来的,但的确身边有很多的朋友都有让自己的小孩学习编程的想法。虽然自己才疏学浅,正好也是万千程序猿中的一个,趁着NCP疫情,在家没事做,就萌生了写本编程指南的想法,可以供大家参考,用作python语言的学习也好。也是我自己对python语言的再学习...

git_stats安装及使用

 git_stats是仓库代码统计工具,今天我们要求用git_stats工具做项目的代码统计,也是一步一坑的找到了一些方法,在这里记录一下 Window环境安装与使用 git_stats可以在windows和linux使用,但是集成方式有点不太一样,我目前尝试的是win版本的,在这里就先记录win版本的安装及使用,Linux环境的后期需要可以再补充 git...

《Python》网络编程之验证客户端连接的合法性、socketserver模块

一、socket的更多方法介绍 # 服务端套接字函数 s.bind() # 绑定(主机,端口号)到套接字 s.listen() # 开始TCP监听 s.accept() # 被动接受TCP客户的连接,(阻塞式)等待连接的到来 # 客户端套接字函数 s.connect() # 主动初始化TCP服务器连接 s.connect_ex() #...

python处理xml大文件[xml.sax]

博客已迁移, 新地址 ===================== 之前使用过python使用dom读取简单配置xml文件的http://blog.csdn.net/wklken/article/details/7270117 今天遇到大文件处理,使用dom占用资源太多,改用sax处理 dom和sax区别可以自己google下 需求:读取xml数据文件,文...

python—mysql小结

---恢复内容开始--- 数据库就是一种特殊的文件,里面存了需要的数据 现在主要是关系型数据库学习——RDBMS;还有非关系型 mysql是现在应用最广泛关系数据库 关系型数据库核心元素是数据行(记录);数据列(字段);数据表(数据行的集合);数据库(数据表的集合)。 SQL是结构化查询语言,用来操作关系型数据库的 重点是数据查询语言(DQL),数据操作语...