python库中的“更好的选择”,任何列表?

Posted

技术标签:

【中文标题】python库中的“更好的选择”,任何列表?【英文标题】:"Better option" from the python library, any list? 【发布时间】:2010-12-23 20:48:31 【问题描述】:

我刚刚发现 optparse 模块的存在。我个人一直使用 getopt,所以我不在乎寻找更好的东西。然而,很明显 optparse 要先进得多,所以我希望它成为将来从命令行获取选项的首选方式。

无论如何,这件事让我印象深刻。我现在想知道是否有我从一开始就在使用的模块或函数,它们在标准库中有更好的选择。有没有这样一个简洁快速的浏览列表,喜欢“以前的解决方案:getopt。更好的解决方案:optparse (since python 2.x)”?

编辑按约定标记为 CW。

解析命令行选项:getopt、optparse、argparse 包管理:distutils、setuptools

【问题讨论】:

【参考方案1】:

我建议这可能是开始这样一个列表的好地方

注意有 pep389 用 argparse 代替 optparse

collections.defaultdict 在大多数你会使用dict.setdefault 的地方效果更好

集合模块是一个很好的熟悉的模块,因为它在 Python3 中有很多新东西

如果您不需要保留列表,生成器表达式通常比列表推导更好

三元运算符 b if a else c 而不是 a and b or c 有所有问题

multiprocessing 替换了您之前的任何其他方式;)

itertools.izip_longest 避免在压缩不平整的东西时使用变通方法

【讨论】:

好吧,假设有人从他的书签中拿出一个魔法清单,我会等一段时间。如果没有,我会修改问题并将其设为 CW,以便我们编写一个 当然。我认为CW是个好主意。您是否正在寻找 Python2.6/7 或 Python3 中的新内容?【参考方案2】:

不完全紧凑,仅参考标准库(和标准 Python 的其他部分)而不是任何第三方包,所有 "What's New in Python X.X?" 随笔。

除此之外,还有 Google,我认为除了随机博客等之外没有任何此类列表。

【讨论】:

google 的主要问题是你必须先知道某物的存在,然后才能搜索它。我永远不会寻找 getopt 的替代品,因为我认为标准库中没有其他东西可以完成相同的任务。 我觉得这更像是对过时成语的总结 @Stefano Borini:“你必须先意识到某物的存在,然后才能搜索它”这是我很久以来听到的最好的借口。我将使用那个,直到我的技能变得如此过时,以至于我无法再从事软件方面的有偿工作。不了解新闻、PEP、图书馆变更等的真正绝妙借口。 洛特:那么,你觉得我在这里做什么?聊天,还是更新我的技能?顺便说一句,我也应该是一名量子化学家。如果我在忙着写论文时没有阅读 PEP,请见谅。【参考方案3】:

我不会完全同意“optparse 优于 getopt”的说法。如果optparse 更适合您,这并不意味着有人不会觉得getopt 更可取。它们用于不同的目的:getopt 更简单,开始使用时需要更少的理解(特别是如果您熟悉其他来源的 getopt:例如 shell 脚本),optparse 更强大且更详细。但是,如果我只需要获取一两个命令时间参数,我什至可以使用简单的if 语句。

总而言之,每种工具都有其用途,每种情况都可能需要更适合该情况的不同工具。

【讨论】:

在我的帖子中,更好 == 有更多功能。 @Stefano Borini,我明白了。谢谢你的解释。【参考方案4】:

我使用 Richard Gruet 的 Python Quick Reference,它对 Python 的所有内容(包括标准库中一些更重要的部分)都是一个很好的参考。它在使用颜色编码和注释对流行的语言和库进行更改方面做得很好。

例如,看看his section on getopt 和list of modules and packages in base distribution。

它尚未针对 Python 3 进行更新,但我充满希望!

【讨论】:

以上是关于python库中的“更好的选择”,任何列表?的主要内容,如果未能解决你的问题,请参考以下文章

论述在Python程序中如何导入OpenCV以及matplotlib库中的pyplot

Python标准库中的列表(list数组)操作汇总(大约25种操作),附示例代码

Python 在列表理解中引发错误(或更好的选择)

在另一个函数中调用列表 - Python [重复]

*.pyd 库中的 C++ Boost Python 方法不起作用

从邮件列表应用 git 补丁