我试图理解为什么Python被认为是一种漂亮的语言。我被引导到pep8的美丽。。。很奇怪。事实上,它说你可以使用任何你想要的惯例,只要保持一致。。。突然我在核心库里发现了一些奇怪的东西:
request()
getresponse()
set_debuglevel()
endheaders()
http://docs.python.org/py3k/library/http.client.html
以下函数是Python3.1中的新功能。这里使用PEP8约定的哪一部分?在
^{pr2}$所以我的问题是:pep8是否用于核心库?为什么会这样?
是否存在与PHP中相同的情况,即我无法仅仅记住函数的名称,因为有各种可能的方法来编写函数名?在
为什么核心库中甚至新函数都没有使用pep8?在
Python标准库没有尽可能严格地控制,模块的样式也各不相同。我不确定您的示例是要说明什么,但是Python的库确实没有一个声音,就像Java的库一样,也没有Win32。语言(和图书馆)是由一个完全自愿的工作人员建造的,没有任何公司向致力于这门语言的人支付薪水,它有时会显示出来。在
当然,我相信其他因素会超过这个负面因素,但它仍然是一个负面因素。在
PEP 8建议使用下划线作为默认选择,但省略下划线通常出于以下两个原因之一:
要说明您引用的具体示例:
popitem
是dict
对象的长期方法。其他采用它的api保留了这种拼写(即没有下划线)。move_to_end
是全新的。尽管对象上有其他方法省略下划线,但它遵循了pep8推荐的使用下划线的约定,因为movetoend
很难阅读(主要是因为toe
是一个单词,所以大多数人的大脑一旦注意到nd
),就必须进行备份并重新分析。set_debuglevel
(以及更新的set_tunnel
)可能应该省去下划线,以便与HTTPConnection
API的其余部分保持一致。然而,最初的作者可能只是倾向于set_debuglevel
而不是{debuglevel
也是HTTPConnection
构造函数的一个参数,解释了缺少第二个下划线),然后{set_tunnel
实际上是另一种情况,删除下划线可能会损害可读性。将settunnel
中的两个“t”并置不利于容易的解析。一旦这些不一致变成了Python发布模块,那么尝试并纠正它们通常是不值得的(这样做是为了将python2和python3之间的
threading
模块接口反Java化,而且这个过程非常烦人,以至于没有人主动“修复”任何其他受类似风格问题困扰的api)。在来自PEP8:
您在这里提到的内容与PEP8指南有些一致;实际上,主要的不一致是在其他部分,通常是CamelCase。在
相关问题 更多 >
编程相关推荐