- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
Python 结束 PEP 8我正在阅读:
不要使用 ==
Yes: if greeting:
No: if greeting == True:
Worse: if greeting is True:
当 bool 值是 True
时,我对这个建议没有问题,但在检查 False
时听起来很奇怪。
如果我想知道一个变量 greeting 是否为 False,为什么我不应该写下面的代码?
if greeting == False:
如果我写if not greeting:
它将与上面的语句有非常不同的含义。如果 greeting 是 None 怎么办?如果是空字符串怎么办?此 PEP 8 建议是否意味着存储 bool 值的变量应仅包含 True 或 False,并且应避免为这些变量使用 None?
在我看来,它看起来像是来自其他具有静态类型的语言的推荐,并且不适合 Python,至少与 False 相比是这样。
顺便说一下,为什么 if greeting is True:
比 if greeting == True:
更糟糕?我们是否还应该理解 if greeting is False:
也比 if greeting == False:
更糟糕?
最佳答案
我相信你读错了。尽量不要将 greeting
视为名词而不是动词(“我正在打招呼”而不是“这是问候语”)。
你可以在 PEP8 的序言中看到线索:
One of Guido's key insights is that code is read much more often than it is written. The guidelines provided here are intended to improve the readability of code.
为此,代码应尽可能类似于书面或口头语言。你不会说 “如果我烦你是真的,请告诉我”
在现实生活中,你只需说 “如果我烦你,请告诉我”
.
这就是为什么您经常看到诸如 isOpen
和 hasBeenProcessed
之类的 bool 变量的原因之一,因为它们有助于提高代码的可读性。
你永远不应该做这样的事情:
if (isOpen == True)
或:
if (customerDead == False)
只是因为您的变量名中已经有一个 bool 值。所有等式都给你的是另一个 bool 值,并且调用减少广告荒谬,你会在哪里停止?
if (isComplete == True) ...
if ((isComplete == True) == True) ...
if (((isComplete == True) == True) == True) ...
if ((((isComplete == True) == True) == True) == True)...
关于python - 关于将 bool 值与 True 或 False 进行比较的奇怪 PEP8 建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4050335/
我有关于 PEP 代理文件的问题。我的 keystone 服务运行在 192.168.4.33:5000 上。我的 Horizon 服务正在 192.168.4.33:443 上运行。 我的 We
PEP 状态的结构和含义是什么? 这几天尝试写一个python2.7的解释器。 但是,我不知道为什么比较运算符 <> 出现在 python 2.7 中。 (它不在 python 3.0 中)找出它在
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 1 年前。 Improve
我的问题与 XACML 上下文处理程序的角色和目的有关。如果我正确理解 OASIS XACML3.0 规范,PEP 会拦截来自客户端应用程序的对某些资源或访问的请求,然后使用上下文处理程序创建适合 P
我正计划为我正在研究的项目设置一些传感器。我计划在每个装有传感器的设备上使用一个简单的xmpp客户端,并通过PEP / PubSub发布读数。 我想运行一个程序,该程序会在收到来自传感器客户端的推送通
我一直在研究 PEP-Proxy-Steelskin,以便我可以为我的 Orion Context 提供一些安全层,但是,有一些问题阻碍了我的进展。 我想使用 IDM 和 Keystone 全局实例。
如果我使用 PEP-526 作为类级变量,我必须将它们记录在类的文档字符串中,在这种情况下,我需要选择我最喜欢的方式来执行此操作。 Python 3.6.4 pylint==1.8.4 class J
我正在寻找任何 PEP 3124实现或开发过程。我对邮件列表不太熟悉,但去年Python邮件列表中似乎没有出现序列“3124”。有关于此 PEP 的一些信息吗? 最佳答案 Most of the fu
我很好奇 PEP 232 (函数的属性)也适用于类方法。最后,我认为它没有或者我做错了什么? Python 2.7.6 (default, Feb 26 2014, 12:07:17) [GCC 4.
我最近一直在尝试学习 WSGI 以及网络如何在 Python 方面工作。所以我一直在阅读 Werkzeug 和 PEP333 来学习。 但是我遇到了一个小问题,我认为我理解但可能不理解,所以我希望您能
我必须在 Python 中声明一些 dict。我写了这样一段代码: class MegaClass(object): _activation_grad_classes = \ {
PEP-484 为类型注释提供了语义。这些非常适合 a) 文档和 b) IDE 帮助。它们不太适合代码优化。 例如,不幸的是,Cython 无法使用 PEP 484 注释 https://groups
假设我有一个函数会根据字符串输入参数返回一个类,如下所示: def foo(bar): if bar == 'baz': return Baz() else:
我正在开发一个大型 Python 程序,它根据命令行选项使用大量模块,特别是 numpy。我们最近发现需要在一个小的嵌入式模块上运行它,它排除了 numpy 的使用。从我们的角度来看,这很容易(只是不
我正在使用 PyCharm 和选项卡。如果有一个需要传递多个参数的函数,我可以这样做,效果很好: return render( request, '/post/list.html',
接受PEP 448 在 Python 3.5 中引入了其他解包通用化。 例如: >>> l1 = [1, 2, 3] >>> l2 = [4, 5, 6] # unpack both iterable
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 8 年前。 Improve
我对 PEP 8 中的样式有疑问(或将每行中的字符数减少到更小)。 假设我有一本包含许多不同属性的book,我想将它们连接成一些字符串。 books = [book_1, book_2, book_3
在PEP 8 Style Guide for Python Code , Naming Conventions 下列出的第一条规则是首要原则。 Overriding Principle Names t
我在 python 中有一个函数,它返回一个类而不是一个实例。如何指示返回值是特定类型的子类? 在下面的例子中,我将返回值设置为类型,但我想进一步说明该类型具有BaseClass的所有属性: from
我是一名优秀的程序员,十分优秀!