Answers:
请参阅Python PEP 8:函数和变量名称:
变量名遵循与函数名相同的约定。
仅在已经是主流样式(例如threading.py)的上下文中才允许使用blendCase,以保持向后兼容性。
findMeAClass
可能比丑陋find_me_a_class
。
《Google Python样式指南》具有以下约定:
module_name
,package_name
,ClassName
,method_name
,ExceptionName
,function_name
,GLOBAL_CONSTANT_NAME
,global_var_name
,instance_var_name
,function_parameter_name
,local_var_name
。
类似的命名方案应适用于 CLASS_CONSTANT_NAME
property
……也许这是假装该物品是什么的问题,而不是它的实际情况
大卫·Goodger(在“代码就像Pythonista” 在这里)描述了PEP 8项建议如下:
joined_lower
用于函数,方法,属性,变量
joined_lower
或ALL_CAPS
常量
StudlyCaps
上课
camelCase
仅符合先前的约定
StudlyCaps for classes
对于几乎所有语言的类来说,这是一个伟大的通用规则。那么,为什么会有一些python内置类(例如datetime.datetime
不遵循该约定呢?)
unittest.TestCase.assertEqual
朋友也不遵循snake_case约定。事实是,Python标准库的某些部分是在约定确立之前开发的,我们现在仍然坚持使用它们。
正如Python代码样式指南所承认的那样,
Python库的命名约定有些混乱,因此我们永远都无法做到这一点
请注意,这仅指Python的标准库。如果他们不能得到那个一致,那么就几乎是具有很大的希望通常附着到约定所有的 Python代码,不是吗?
因此,在这里的讨论中,我可以推断出,如果在过渡到Python时继续使用变量或函数的Java或C#命名惯例(例如清晰明确的命名规则),这并不是一个可怕的罪过。当然,请记住,最好遵守代码库/项目/团队的流行风格。正如《 Python风格指南》指出的那样,内部一致性最重要。
随意将我视为异端。:-)像OP一样,我也不是“ Pythonista”,无论如何也没有。
如前所述,PEP 8表示可lower_case_with_underscores
用于变量,方法和函数。
我更喜欢使用lower_case_with_underscores
变量以及mixedCase
方法和函数使代码更明确和可读。因此,遵循Python Zen的 “显式优于隐式”和“可读性”
@JohnTESlade回答的内容更进一步。Google的python样式指南提供了一些非常简洁的建议,
避免使用的名称
\__double_leading_and_trailing_underscore__ names
(由Python保留)命名约定
CapWords
类的名字,但lower_with_under.py
对模块名称。尽管有许多命名的现有模块CapWords.py
,但现在不建议这样做,因为当碰巧以一个类命名该模块时会造成混淆。(“等待-我写import StringIO
还是写from StringIO import StringIO
?”)大多数python的人都喜欢使用下划线,但是自从5年前以来,即使我使用python,我仍然不喜欢它们。它们对我来说看起来很难看,但也许这就是我脑海中的所有Java。
我只是喜欢驼峰更好,因为它适合与类的命名方式更好,感觉更符合逻辑具有SomeClass.doSomething()
比SomeClass.do_something()
。如果您在python中查看全局模块索引,则会发现这两者,这是因为它是随着时间的推移而增长的各种来源的库的集合,而不是由像Sun这样的公司开发的具有严格编码规则的库。我要说的底线是:使用任何您喜欢的更好的东西,这只是个人品味的问题。
make_xpath_predicate
,make_xpath_expr
,make_html_header
,make_html_footer
SomeClass.doSomething()
(通常很少使用静态方法)an_instance.do_something()
我个人尝试将CamelCase用于类,mixedCase方法和函数。变量通常用下划线分隔(当我记得时)。这样一来,我就可以一目了然地告诉我我到底在叫什么,而不是所有看起来都一样的东西。
有一篇关于此的论文:http : //www.cs.kent.edu/~jmaletic/papers/ICPC2010-CamelCaseUnderScoreClouds.pdf
TL; DR它说snake_case比camelCase更具可读性。这就是为什么现代语言在任何可能的地方使用(或应该使用)蛇的原因。