来自C#背景,变量和方法名称的命名约定通常是CamelCase或Pascal Case:
// C# example
string thisIsMyVariable = "a"
public void ThisIsMyMethod()
在Python中,我已经看到了上述内容,但我也看到了使用下划线:
# python example
this_is_my_variable = 'a'
def this_is_my_function():
Python有更优选的,明确的编码风格吗?
答案 0 :(得分:771)
请参阅Python PEP 8。
函数名称应为小写, 用下划线分隔的单词为 提高可读性所必需的。
仅在上下文中允许使用mixedCase 那已经很普遍了 式
变量...
使用功能命名规则: 小写,单词分隔 强调必要的强调 可读性。
就我个人而言,我偏离了这一点,因为对于我自己的项目,我也更喜欢mixedCase
而不是lower_case
。
答案 1 :(得分:595)
Google Python Style Guide具有以下约定:
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
答案 2 :(得分:218)
David Goodger(在“Code like a Pythonista”here中)描述了PEP 8的建议如下:
joined_lower
了解函数,方法,
属性,变量
joined_lower
或ALL_CAPS
代表
常数
StudlyCaps
用于课程
camelCase
只是为了顺从
已有的惯例
答案 3 :(得分:38)
Style Guide for Python Code承认,
Python的命名约定 图书馆有点乱,所以我们会 从来没有完全一致
请注意,这仅指Python的标准库。如果他们无法那个一致,那么所有 Python代码的约定几乎没有什么希望呢?
从那以及这里的讨论中,我会推断,如果一个人继续使用,那么不是一个可怕的罪。当交叉到Python时,Java或C#(明确且完善的)变量和函数的命名约定。当然,请记住,最好遵守代码库/项目/团队的主流风格。正如Python样式指南所指出的,内部一致性最重要。
随意将我视为异教徒。 :-)和OP一样,我不是“Pythonista”,不管怎么说。
答案 4 :(得分:32)
正如其他答案所示,有PEP 8,但PEP 8只是标准库的样式指南,并且它仅作为福音。 PEP 8对其他代码的最常见偏差之一是变量命名,特别是对于方法。没有单一的主导风格,虽然考虑到使用mixedCase的代码量,如果要进行严格的人口普查,最终可能会得到一个带有mixedCase的PEP 8版本。 PEP 8几乎没有其他偏差,这很常见。
答案 5 :(得分:29)
如前所述,PEP 8表示将lower_case_with_underscores
用于变量,方法和函数。
我更喜欢将lower_case_with_underscores
用于变量,mixedCase
用于方法和函数,使代码更加清晰可读。因此,遵循Zen of Python's“显式优于隐式”和“可读性计数”
答案 6 :(得分:17)
我个人尝试将CamelCase用于类,mixedCase方法和函数。变量通常是下划线(当我记得时)。通过这种方式,我可以一眼就看出我究竟在呼唤什么,而不是一切看起来都一样。
答案 7 :(得分:15)
大多数python人更喜欢下划线,但即使我使用python已经超过5年了,我仍然不喜欢它们。他们看起来很难看,但也许这就是我头脑中的Java。
我更喜欢CamelCase,因为它更符合类的命名方式,SomeClass.doSomething()
比SomeClass.do_something()
更合乎逻辑。如果你在python中查看全局模块索引,你会发现两者,这是因为它是来自各种来源的库的集合,这些库随着时间的推移而增长,而不是像Sun这样的公司用严格的编码规则开发的东西。 。我会说底线是:使用你喜欢的任何东西,这只是个人品味的问题。
答案 8 :(得分:14)
@JohnTESlade回答的内容。 Google's python style guide有一些非常简洁的建议,
应避免使用的名称
\__double_leading_and_trailing_underscore__ names
(由Python保留)命名约定
CapWords
用于类名,将lower_with_under.py
用于模块名。尽管有许多名为CapWords.py
的现有模块,但现在不建议这样做,因为当该模块恰巧以类命名时会引起混淆。 (“等待-我写了import StringIO
还是from StringIO import StringIO
?”)答案 9 :(得分:8)
有一篇关于此的文章:http://www.cs.kent.edu/~jmaletic/papers/ICPC2010-CamelCaseUnderScoreClouds.pdf
TL; DR它说snake_case比camelCase更具可读性。这就是现代语言在任何可能的地方使用(或应该使用)蛇的原因。
答案 10 :(得分:3)
编码风格通常是组织内部策略/约定标准的一部分,但我认为通常,all_lower_case_underscore_separator样式(也称为snake_case)在python中最常见。
答案 11 :(得分:0)
通常,遵循语言标准库中使用的约定。
答案 12 :(得分:0)
在以其他编程语言进行开发时,我个人使用Java的命名约定,因为它一致且易于遵循。这样,我就不会一直在努力使用哪些约定不应该成为我项目中最难的部分!