下一代for循环和工作跟踪器
项目描述
几乎所有程序都会处理一种或多种“项目”。这正是循环的作用,对吗?
但除了当前的循环值或索引之外,编程语言并没有帮助跟踪处理进度。有多少项目已经被成功处理?有多少错误?现在我们的总工作进度如何?哪些项目存在问题需要稍后查看?
尽管这些记账任务是几乎所有程序都必不可少的,但它们“留给了读者”。“这里有一些基本的循环。祝您玩得开心!”因此,开发者“重新发明轮子”,为每个新程序使用临时容器、计数器和状态标志来跟踪状态。实际上并不那么高级,对吧?
chores通过提供一个简单、可重复的模式来处理项目并跟踪它们的状态,解决了这种不必要的复杂性、错误和努力。
文档可以在Read the Docs找到。
用法
from chores import Chores chores = Chores('Jones able baker charlie 8348 Smith Brown Davis'.split()) for c in chores: status = 'name' if c.istitle() else 'other' chores.mark(c, status) print chores.count('name'), "names,", \ chores.count('^name'), "others"
产生
4 names, 4 others
或者如果您决定您实际上需要更多信息,只需更改输出语句
print todos.count('name'), "names:", todos.marked('name') print todos.count('^name'), "others:", todos.marked('^name')
现在您得到
4 names: ['Jones', 'Smith', 'Brown', 'Davis'] 4 others: ['able', 'baker', 'charlie', '8348']
讨论
许多程序使用各种列表、字典、集合、计数器和状态标志跟踪正在处理的项目状态。一开始,“家务”可能看起来没有太大的进步,因为它有相同类型的初始化和循环。
但是在处理循环的末尾,事情变得更有趣,这时会产生处理了什么、每个项目是如何处理的、哪些项目产生了错误或其他条件以及处理了哪些特殊情况等的摘要或报告。
在上面的例子中,我们从未需要记录找到多少个名字,或多少个非名字。当我们决定我们想要将输出从摘要计数更改为完整列表时,我们不需要回去收集不同的信息。我们只是以不同的方式显示已经掌握的信息。请注意,结果的顺序也得到了很好的维护。当我们回顾关于“发生了什么”的报告时,我们不必很努力地将结果与输入相关联;与使用 dict 和 set 结构不同,项目是按照它们到达的顺序报告的。
通常,开发者开始时只对每个正在处理的项目的一些处理方式有所思考。随着时间的推移,她会开始意识到:“我需要计算这些案例,以便我可以报告它们!”或者,“我保留了一个错误计数器,但我实际上应该保留一个哪些项目出了问题的列表,因为现在我不仅要告诉用户有多少个出了问题,还要告诉用户具体是哪些。”或者“我需要跟踪哪些项目没有通过主要处理,以便我可以对这一些特殊情况进行更深入的处理。”然后她会回去添加计数器、收集列表等等——添加了大量必须构建、测试和调试的临时代码。
对于需要通过多个工作阶段或阶段的处理的数据来说,这尤其棘手。开发者随后必须添加结构来从早期的处理步骤传递到后续的步骤。
使用 chores,不需要这样的定制工作。它负责跟踪哪些项目导致了哪些结果。它始终准备好提供高质量的信息,无论是用于报告还是用于管理后续处理。账目信息以整洁、逻辑的格式轻松可用,无需额外的开发工作。
当处理代码变得更加复杂,以及随着程序随时间发展时,chores 特别显示了其优点。
更多信息可以在 Read the Docs 找到。
注意
我已经在我的项目中成功使用了 chores,并且它有一个真正的测试套件。但现实中它应该被认为是“早期测试版”代码。它是实验的一部分,旨在提升开发任务,因此其API和使用模式将会发展。
chores 是“交叉切割”的一个例子——以一致的方式处理几个看似不相关的关注点,因为它们实际上是有联系的,需要系统地处理。
使用神奇的 pytest 和 tox 管理自动化多版本测试。成功打包并针对 Python 2.6、2.7、3.2、3.3 和 3.4 的所有最新版本以及 PyPy 2.6.0(基于 2.7.9)和 PyPy3 2.4.0(基于 3.2.5)进行测试。应该可以在 Python 3.5 上运行得很好,尽管 py.test 在其预发布迭代中出了问题。
作者,Jonathan Eunice 或 @jeunice on Twitter 欢迎您的评论和建议。
安装
要安装或升级到最新版本
pip install -U chores
在特定Python版本下 easy_install(本例中为3.3)
python3.3 -m easy_install --upgrade chores
(您可能需要使用 sudo 命令授权安装。在没有超级用户权限的环境中,您可能想使用 pip 的 --user 选项,只为单个用户安装,而不是系统范围。)
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源代码发行版
chores-0.6.3.zip 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | aa97e3fa7174d17264b617721ad36a2d506954977ac3f9b370796531a5898f05 |
|
MD5 | 2e357b94d6216c05dd6e1179676c1041 |
|
BLAKE2b-256 | c5a1929f240f0dbec1f1d589f422a323f396875d98b2d13b94c602015cacc1b4 |
chores-0.6.3.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b5e3f7181c19615ece95bf44baa10491b9524e9853ab01453bc59dac9d397c5b |
|
MD5 | 3ae4d232b644145219caa6b547262c04 |
|
BLAKE2b-256 | 1cdad555c2ad3df0b0b544c6c8d569790bcd4f3d6ef32aed8266d8ec74d9cea5 |