问题标签 [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.
python - 如何在 Python 中打印到 stderr?
有几种方法可以写入 stderr:
这似乎与Python #13 †</sup> 的 zen相矛盾 ,那么这里有什么区别,一种或另一种方式有什么优点或缺点吗?应该使用哪种方式?
†</sup>应该有一种——最好只有一种——明显的方法。
python - 为什么 Python 将元组、列表、集合和字典视为根本不同的东西?
我喜欢 Python 的原因之一是元组、列表、集合和字典提供的表达能力/减少了编程工作量。一旦你理解了列表推导和一些使用in
and的基本模式for
,生活就会变得更好!蟒蛇摇滚。
但是,我确实想知道为什么这些构造会被视为不同的东西,以及随着时间的推移这是如何变化的(变得陌生)。回到 Python 2.x,我可以提出一个论点,它们都只是基本集合类型的变体,而且有些非异国情调的用例要求您将字典转换为列表并返回,这有点令人恼火再次。(字典不只是具有特定唯一性约束的元组列表吗?列表不只是具有不同类型唯一性约束的集合吗?)。
现在在 3.x 世界中,它变得更加复杂。现在有了命名元组——开始感觉更像是一个特例字典。现在有有序的字典——开始感觉更像一个列表。我刚刚看到了一个订购套装的食谱。我可以想象这种情况一直在发生......唯一列表等呢?
Python 之禅说“应该有一种——最好只有一种——明显的方式来做到这一点”。在我看来,大量的专用集合类型与这条 Python 规则相冲突。
铁杆 Pythonistas 是怎么想的?
python - raise 条件表达式上的语句
遵循“武士原则”,我试图在我的功能上做到这一点,但似乎是错误的......
有没有其他“美丽”的方式来做到这一点?谢谢
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
,因为,我不知道,我猜他们只是觉得它太“花哨”,而且对于结构良好的代码,它无论如何都不会带来任何好处,所以它似乎我没有留下任何真实世界的用例……那是我真正思考的问题。
python - Python Zen - (仅)一种方法
这个问题可能听起来很主观,但正如“禅宗”所说,有(几乎总是)一种首选方法,它最终不应该是主观的。
哪种方式更好?
(1)是(IMO)非常清楚,但在许多答案中,map()
都使用了。如果我们这样做,(2) 和 (3) 之间的可读性几乎相同(至少在 IMO)。
许多其他任务也是如此,但我选择了这个,因为它可以代表所有类似的任务。
python - Pythonic地从可散列元素列表中消除重复项
我只是想做
删除所有重复的条目mylist
。然而,链接内置插件总是让人觉得有点笨拙。我想知道,从列表中消除重复项的(大多数)pythonic/zen 方法是什么?
在搜索时,我发现上述结构是对 stackoverflow 上“消除重复”问题的答案。没有人说这是一个坏主意,但这只是暗示一个答案,明确的总比隐含的好。
上述构造是从(可散列元素的)列表中消除重复项的方式吗?
如果不是,那是什么?
python - 处理异常的更好方法是什么?
如果我在编写一些代码时不确定某事,我会尝试再次阅读The Zen of Python
。这一次,那些台词让我犹豫了。
在当前代码中,我有一些可能如下所示的函数:
所有对他们的要求如下:
此类代码的异常将冒泡并在上层捕获。
但应该是这样吗?
add_v_1
可以引发TypeError
异常,我想从中恢复。因此,可能的函数调用将是:
但是对于每次调用,我都应该进行异常处理。看起来很重。
所以,我可以这样做:
一个电话是:
看起来更干净。
似乎所有这些方法都遵循The Zen of Python
但其中哪一种是更好的选择?
python - 带有多个变量的 with 语句:有没有更易读的方法来写这个?
例如,我需要使用一个with
语句打开两个文件。他们每个人还有一个条件:实际打开或使用某些东西。
就我而言,是打开由名称指定的文件,还是在未指定名称的情况下使用标准输入/标准输出。问题是它对于单行来说太长太复杂了。
第一次,我有类似的东西:
我个人喜欢这个版本。对我来说,它看起来很简单,但我需要使用空格来对齐两行(我的 IDE PyCharm 会警告我有多余的空格)。顺便说一句,在 python 中使用空格来对齐代码真的很重要吗?
另一种对齐方式是:
但由于PEP 8 – 缩进,它似乎更糟。
而且我不喜欢可读性较差的“正确”版本,乍一看甚至令人困惑:
我可以将它嵌套在两个层次中,但根据 zen..
所以我很感兴趣是否有更优雅的方式来写这个?或者也许我的版本很好,我应该忽略关于空格的警告。
python - 我应该使用内置异常还是定义自己的异常?
我的方法或功能如下:
在我没有找到任何东西或者最好定义我自己的异常的情况下引发 KeyError 是否合适?你怎么看?
我知道,这不是严格的技术问题,但他们说:“可读性很重要”,我需要知道其他人的想法。:)
python - 导入本地函数的 PEP8 风格推荐是什么?
PEP8 规定您将导入放在代码的顶部,这使读者可以在一个空间中查看您正在导入的内容。
但是,如果您有函数的本地存储库以便导入它们,则必须首先更改当前目录。
如果您尝试更改目录,则会违反 PEP8,因为您的导入并非全部在一个地方
我知道“愚蠢的一致性是小精灵的妖精”,如果我必须处理 PEP8 违规行为,那也没关系。
我只是想象有一个实际的解决方案,因为很多人必须编写函数并导入它们。
有没有办法导入不会创建 PEP8 违规的本地存储函数?
编辑:如此处所述: https ://stackoverflow.com/a/53832780/9936329
会注意到您故意破坏 PEP8 并且也没有检查未解决的引用。