python – 在条件语句中声明变量有问题吗?
发布时间:2020-12-20 12:03:22 所属栏目:Python 来源:网络整理
导读:在条件的所有可能分支中重新定义变量之前,它是否可以防止定义变量? 比如应该这个代码: # Condition could fail try: textureIndices = someExpression() # textureIndices is defined here if it does except: textureIndices = [] return textureIndices
在条件的所有可能分支中重新定义变量之前,它是否可以防止定义变量?
比如应该这个代码: # Condition could fail try: textureIndices = someExpression() # textureIndices is defined here if it does except: textureIndices = [] return textureIndices 重写为: # textureIndices is defined early and then re-defined in the conditional textureIndices = None try: textureIndices = someExpression() except: textureIndices = 66 return textureIndices 或者,因为除了打开其他问题,这里的textureIndices的定义是否存在问题: if condition: textureIndices = someExpression() else: textureIndices = 66 return textureIndices 减少问题? 唯一的区别是在第二个版本中textureIndices是在条件之外定义的. 我不明白为什么它很重要因为textureIndices不可能在条件中没有赋值,但我可以看到为什么从管家的角度来看,知道变量被分配给某些东西是件好事. 例如,如果第一个示例中没有except语句,则不会始终定义textureIndices并且返回会导致错误. 但是,如果没有转发定义在条件的两个原因中定义的变量,是否存在问题? 解决方法
一个原因是它创建了冗余代码.在这种情况下,它似乎不是很明显,但举一个例子,你有多个唯一的except语句在代码中捕获多个异常.想象一下,如果有人想重构您的代码或添加其他除语句.
textureIndices = None try : textureIndices = [thing for thing in func()]fail except InvalidTextException: textureIndices = [] #lines to handle specific exception except ValueError: textureIndices = [] #lines to handle specific exception except OSError: textureIndices = [] #lines to handle specific exception return textureIndices 如果您有多个以这种方式运行的变量,您可以看到它如何快速升级.通过首先声明基本情况,可以减少冗余. textureIndices = [] try : textureIndices = [thing for thing in func()]fail except InvalidTextException: #lines to handle specific exception except ValueError: #lines to handle specific exception except OSError: #lines to handle specific exception return textureIndices (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 新行来自Python?
- python无法导入时区,但可以导入日期时间
- python – Django – 确定地理坐标是否在圆圈内
- Python实现监控程序执行时间并将其写入日志的方法
- python – pip安装eyeD3模块.找不到libmagic
- python – 使用索引列表从字典中获取值
- Python 爬虫之超链接 url中含有中文出错及解决办法
- PyCharm出现TabError: inconsistent use of tabs and space
- 一个使用SimpleHTTPServer和SocketServer的简单的python服务
- linux 2.6升级Python2.7 ./configure 报错问题