问题标签 [zen-of-python]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
16 回答
1070556 浏览

python - 如何在 Python 中打印到 stderr?

有几种方法可以写入 stderr:

这似乎与Python #13 †</sup> 的 zen相矛盾 ,那么这里有什么区别,一种或另一种方式有什么优点或缺点吗?应该使用哪种方式?

†</sup>应该有一种——最好只有一种——明显的方法。

0 投票
8 回答
5127 浏览

python - 为什么 Python 将元组、列表、集合和字典视为根本不同的东西?

我喜欢 Python 的原因之一是元组、列表、集合和字典提供的表达能力/减少了编程工作量。一旦你理解了列表推导和一些使用inand的基本模式for,生活就会变得更好!蟒蛇摇滚。

但是,我确实想知道为什么这些构造会被视为不同的东西,以及随着时间的推移这是如何变化的(变得陌生)。回到 Python 2.x,我可以提出一个论点,它们都只是基本集合类型的变体,而且有些非异国情调的用例要求您将字典转换为列表并返回,这有点令人恼火再次。(字典不只是具有特定唯一性约束的元组列表吗?列表不只是具有不同类型唯一性约束的集合吗?)。

现在在 3.x 世界中,它变得更加复杂。现在有了命名元组——开始感觉更像是一个特例字典。现在有有序的字典——开始感觉更像一个列表。我刚刚看到了一个订购套装的食谱。我可以想象这种情况一直在发生......唯一列表等呢?

Python 之禅说“应该有一种——最好只有一种——明显的方式来做到这一点”。在我看来,大量的专用集合类型与这条 Python 规则相冲突。

铁杆 Pythonistas 是怎么想的?

0 投票
5 回答
19176 浏览

python - raise 条件表达式上的语句

遵循“武士原则”,我试图在我的功能上做到这一点,但似乎是错误的......

有没有其他“美丽”的方式来做到这一点?谢谢

0 投票
5 回答
1220 浏览

python - Python之禅vs with语句——哲学思考

我不打算简单地浪费您的时间,但是:您是否也想过,在使用 Python 的with声明时,它确实与“Python 之禅”的第 5 行“平面优于嵌套”相反?任何开明的 Python 大师都可以与我分享他们对此的一些见解吗?

(我总是发现,每次我使用with而不是f.close()...时,我的代码中都会弹出一个多层次的缩进,这并不是说我try: ... finally: ...无论如何都不会使用,因此with即使我越来越喜欢,我仍然无法获得它的好处并且越来越了解 Python...)


@glglgl(对不起,我找不到在评论中写代码的方法):是的,但是如果你顺其自然with,你的代码就会变成:

...并且只使用 with 而没有 thetry是人们最终在他们使用而不是 with 的那种骇人听闻的“一次性”代码中所做的事情f.close()(这很糟糕,因为如果在他们之前抛出异常,文件可能不会关闭f.close()),所以对于“hacky”代码,人们只是不使用with,因为,我不知道,我猜他们只是觉得它太“花哨”,而且对于结构良好的代码,它无论如何都不会带来任何好处,所以它似乎我没有留下任何真实世界的用例……那是我真正思考的问题。

0 投票
1 回答
1421 浏览

python - Python Zen - (仅)一种方法

这个问题可能听起来很主观,但正如“禅宗”所说,有(几乎总是)一种首选方法,它最终不应该是主观的。

哪种方式更好?

(1)是(IMO)非常清楚,但在许多答案中,map()都使用了。如果我们这样做,(2) 和 (3) 之间的可读性几乎相同(至少在 IMO)。

许多其他任务也是如此,但我选择了这个,因为它可以代表所有类似的任务。

0 投票
1 回答
154 浏览

python - Pythonic地从可散列元素列表中消除重复项

我只是想做

删除所有重复的条目mylist。然而,链接内置插件总是让人觉得有点笨拙。我想知道,从列表中消除重复项的(大多数)pythonic/zen 方法是什么?

在搜索时,我发现上述结构是对 stackoverflow 上“消除重复”问题的答案。没有人说这是一个坏主意,但这只是暗示一个答案,明确的总比隐含的好。

上述构造是从(可散列元素的)列表中消除重复项的方式吗?

如果不是,那是什么?

0 投票
3 回答
144 浏览

python - 处理异常的更好方法是什么?

如果我在编写一些代码时不确定某事,我会尝试再次阅读The Zen of Python。这一次,那些台词让我犹豫了。

在当前代码中,我有一些可能如下所示的函数:

所有对他们的要求如下:

此类代码的异常将冒泡并在上层捕获。

但应该是这样吗?

add_v_1可以引发TypeError异常,我想从中恢复。因此,可能的函数调用将是:

但是对于每次调用,我都应该进行异常处理。看起来很重。

所以,我可以这样做:

一个电话是:

看起来更干净。

似乎所有这些方法都遵循The Zen of Python但其中哪一种是更好的选择?

0 投票
1 回答
52 浏览

python - 带有多个变量的 with 语句:有没有更易读的方法来写这个?

例如,我需要使用一个with语句打开两个文件。他们每个人还有一个条件:实际打开或使用某些东西。

就我而言,是打开由名称指定的文件,还是在未指定名称的情况下使用标准输入/标准输出。问题是它对于单行来说太长太复杂了。

第一次,我有类似的东西:

我个人喜欢这个版本。对我来说,它看起来很简单,但我需要使用空格来对齐两行(我的 IDE PyCharm 会警告我有多余的空格)。顺便说一句,在 python 中使用空格来对齐代码真的很重要吗?

另一种对齐方式是:

但由于PEP 8 – 缩进,它似乎更糟。

而且我不喜欢可读性较差的“正确”版本,乍一看甚至令人困惑:

我可以将它嵌套在两个层次中,但根据 zen..

所以我很感兴趣是否有更优雅的方式来写这个?或者也许我的版本很好,我应该忽略关于空格的警告。

0 投票
3 回答
59 浏览

python - 我应该使用内置异常还是定义自己的异常?

我的方法或功能如下:

在我没有找到任何东西或者最好定义我自己的异常的情况下引发 KeyError 是否合适?你怎么看?

我知道,这不是严格的技术问题,但他们说:“可读性很重要”,我需要知道其他人的想法。:)

0 投票
1 回答
302 浏览

python - 导入本地函数的 PEP8 风格推荐是什么?

PEP8 规定您将导入放在代码的顶部,这使读者可以在一个空间中查看您正在导入的内容。

但是,如果您有函数的本地存储库以便导入它们,则必须首先更改当前目录。

如果您尝试更改目录,则会违反 PEP8,因为您的导入并非全部在一个地方

我知道“愚蠢的一致性是小精灵的妖精”,如果我必须处理 PEP8 违规行为,那也没关系。

我只是想象有一个实际的解决方案,因为很多人必须编写函数并导入它们。

有没有办法导入不会创建 PEP8 违规的本地存储函数?

编辑:如此处所述: https ://stackoverflow.com/a/53832780/9936329

会注意到您故意破坏 PEP8 并且也没有检查未解决的引用。