python - 生成具有连续值的变量
问题描述
我正在使用一个有很多列的表。为了不得到幻数,我编写了这样的代码
colName, colID, colDesc = 1, 2, 3
当我想添加一个新项目时,它变成
# vvvvvvvv v
colName, colAddr, colID, colDesc = 1, 2 ,3, 4
我在colAddr
我想要的地方加上一个 4 在最后。这适用于 4 个变量,但大约有 20-30 个,我得到了很长的代码行。
所以我把它们分开:每行
colName = 1
colID = 2
colDesc = 3
如果我想在名称和 ID 之间添加一些东西,我将不得不重新编号变量,这真的很痛苦
colName = 1
colAddr = 2
colID = 3 # renumbered
colDesc = 4 # renumbered
我可能不得不经常在两者之间添加列 - 表格设计仍然很流畅,所以我想到了这样的东西
col = 0
col, colName = col + 1, col
col, colID = col + 1, col
col, colDesc = col + 1, col
如果我想添加colAddr
,那将只是一行更改
col = 0
col, colName = col + 1, col
col, colAddr = col + 1, col # new line of code
col, colID = col + 1, col
col, colDesc = col + 1, col
这有效,但看起来真的很乱。有没有更好的方法来做到这一点?
解决方案
比@depperm 建议的更优雅的解决方案是使用enum
模块(从 Python v.3.4 开始可用),例如:
from enum import Enum
class MyEnum (Enum):
col, colName, colAddr, colID, colDesc = range(5)
然后按以下方式使用它:
MyEnum.col
MyEnum.colName
...
您当然可以为每个变量使用非连续值。
推荐阅读
- r - 如何摆脱 R 中 list.files 输出中的文件扩展名
- node.js - 如何获取greenlock-express http服务器实例以将其传递给socket.io?
- python - 如何使用带有 2 个实例的 read_csv 进行分离
- angular - Angular 等待 rxjs 的响应
- javascript - 在使用以下代码阅读时从给出“\n”值的单词中获取自定义属性
- qt - 用于 x32 Windows 计算机的 Qt
- python-3.x - 如果带有 for 循环的 range() 没有准确到达结束编号会发生什么?
- azure-devops - 将 Azure Pipelines 与 GitLab 私有存储库一起使用
- flutter - 我可以从小部件中存储一个小部件,然后在另一个页面中使用它而不从头开始重建它吗?- 颤振
- .net - EF Core 中两个抽象类之间的一对一关系