什么是命名约定在Python对于可变和功能的名字?
-
03-07-2019 - |
题
来自C#背景的命名约定变量和方法的名称通常是驼峰式或Pascal情况:
// C# example
string thisIsMyVariable = "a"
public void ThisIsMyMethod()
在蟒蛇,我看见上面的,但我也看到了强调被用于:
# python example
this_is_my_variable = 'a'
def this_is_my_function():
是否有一个更好的,明确的编码的风格蟒蛇?
解决方案
参见Python PEP 8 。
函数名称应为小写, 用下划线分隔的单词为 提高可读性所必需的。
仅在上下文中允许使用mixedCase 那已经很普遍了 式
变量...
使用功能命名规则: 小写,单词分隔 强调必要的强调 可读性。
就个人而言,我偏离了这一点,因为我也更喜欢 mixedCase
而非 lower_case
用于我自己的项目。
其他提示
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
大卫Goodger(在"代码就像一个Pythonista" 在这里,)介绍了PEP8的建议如下:
joined_lower
对于功能方法, 属性、变量joined_lower
或ALL_CAPS
对于 常量StudlyCaps
课camelCase
只要符合 预现有公约
Python的命名约定 图书馆有点乱,所以我们会 从来没有完全一致
请注意,这仅指Python的标准库。如果他们无法那个一致,那么所有 Python代码的约定几乎没有什么希望呢?
从那以及这里的讨论中,我会推断,如果一个人继续使用,那么不是一个可怕的罪。当交叉到Python时,Java或C#(明确且完善的)变量和函数的命名约定。当然,请记住,最好遵守代码库/项目/团队的主流风格。正如Python样式指南所指出的,内部一致性最重要。
随意将我视为异教徒。 :-)和OP一样,我不是“Pythonista”,至今还没有。
有 PEP 8 ,正如其他答案所示,但是PEP 8它只是标准库的样式指南,它只被视为福音书。 PEP 8对其他代码的最常见偏差之一是变量命名,特别是对于方法。没有单一的主导风格,虽然考虑到使用mixedCase的代码量,如果要进行严格的人口普查,最终可能会得到一个带有mixedCase的PEP 8版本。 PEP 8几乎没有其他偏差,这很常见。
如上所述,PEP 8说要使用 lower_case_with_underscores
来获取变量,方法和函数。
我更喜欢使用 lower_case_with_underscores
来获取变量,而使用 mixedCase
来获取方法和函数会使代码更加明确和可读。因此,遵循 Zen of the Python “明确胜过隐含”。和“可读性计数”
我个人尝试将CamelCase用于类,mixedCase方法和函数。变量通常是下划线(当我记得时)。通过这种方式,我可以一眼就看出我究竟在呼唤什么,而不是一切看起来都一样。
大多数python人更喜欢下划线,但即使我使用python已经超过5年了,我仍然不喜欢它们。他们看起来很难看,但也许这就是我头脑中的Java。
我更喜欢CamelCase,因为它更符合类命名的方式。让 SomeClass.doSomething()
比 SomeClass.do_something()
更合乎逻辑。如果你在python中查看全局模块索引,你会发现两者,这是因为它是来自各种来源的库的集合,这些库随着时间的推移而增长,而不是像Sun这样的公司用严格的编码规则开发的东西。 。我会说底线是:使用你喜欢的任何东西,这只是个人品味的问题。
还要什么@JohnTESlade有回答。 谷歌的蟒导风格 有一些漂亮整洁的建议,
名字,以避免
- 单个字符的名称,除了计数器或迭代
- 破折号(-)在任何包裹/模块的名字
\__double_leading_and_trailing_underscore__ names
(保留的通过蟒蛇)
命名约定
- "内部的"装置内部的一个模块或保护或私营内的一类。
- 前添加一个单一的强调(_)有些与会者支持保护模块变量和功能(不包括进口*)。加上一个双人强调(__)的一个实例可变或方法的有效供应,使可变的方法或私人对其分类(用名称重整).
- 地方有关的课程和高级别职能集中到一个模块。不像爪哇,没有必要限制自己的一类,每个模块。
- 使用
CapWords
对于类名称,但是lower_with_under.py
模块的名字。虽然有许多现有的模块名为CapWords.py
, 这是现在气馁,因为它是混乱的模块时,会发生被任命为后一类。("等着--我没写import StringIO
或from StringIO import StringIO
?")
有一篇关于此的论文: http:// www .cs.kent.edu /〜jmaletic /纸/ ICPC2010-CamelCaseUnderScoreClouds.pdf
TL; DR它说snake_case比camelCase更具可读性。这就是现代语言在任何可能的地方使用(或应该使用)蛇的原因。
编码风格通常是组织内部策略/约定标准的一部分,但我认为通常,all_lower_case_underscore_separator样式(也称为snake_case)在python中最常见。
通常,遵循语言标准库中使用的约定。