在python中,变量名和函数名的命名约定是什么?

What is the naming convention in Python for variable and function names?

来自C背景,变量和方法名称的命名约定通常是camelcase或pascal:

1
2
3
// C# example
string thisIsMyVariable ="a"
public void ThisIsMyMethod()

在python中,我看到了上面的内容,但我也看到了使用下划线:

1
2
3
# python example
this_is_my_variable = 'a'
def this_is_my_function():

对于python,是否有更可取、更明确的编码风格?


Python语言PEP 8。 </P >

Function names should be lowercase,
with words separated by underscores as
necessary to improve readability.

mixedCase is allowed only in contexts
where that's already the prevailing
style

元………………… </P >

Use the function naming rules:
lowercase with words separated by
underscores as necessary to improve
readability.

我从这deviate personally,因为我也宁愿mixedCase过我自己lower_case中心项目。 </P >


谷歌的Python的风格指南有以下公约: </P >

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 </P >


Goodger(大卫在"代码pythonista这里像一个"describes PEP)为8的建议如下: </P >

  • joined_lower函数的方法,方法, 变量的属性 </P >

  • joined_lowerALL_CAPS方法 常数 </P >

  • StudlyCaps类的方法 </P >

  • camelCase只对符合今天 预现有的公约 </P >


作为《Python代码风格指南admits, </P >

The naming conventions of Python's
library are a bit of a mess, so we'll
never get this completely consistent

值得注意的是,这指的是对Python的标准库。如果他们不能得到,然后在hardly洽,有多部希望生育一generally黏的公约下的Python代码转换器的方法,是吗? </P >

从那,和在这里的讨论会,我是不是一个deduce罪,如果让一horrible使用如Java或C的#(清澈的富裕和宇)方法的变量和函数的命名公约对Python的电讯公司当过。在我的大学课程的一种,它是最好的,这对当时的援助与什么风格的代码库/项目/团队happens"未来"。作为新型的Python指南分门诊,内部一致性的事情很多。 </P >

今天,我们作为一个自由的感觉dismiss heretic。:-)样的作品,我不是一个"pythonista",而不是呢。 </P >


在那里,PEP 8,为其他解答的节目,但在styleguide PEP 8只测定的标准库,和它的taken therein只为福音。一部最frequent deviations PEP 8个系部的其他方法的代码的变量命名,specifically测定方法。在那里,嗯,单predominate风格,尽管所使用的代码considering的容,一是对mixedcase,如果让一个严格人口普查将自己与一个版本上可能与mixedcase PEP 8部。在那里,从其他的异常小的PEP 8这就是作为共有。 </P >


作为对上述8 lower_case_with_underscores说,PEP方法使用的变量,方法和函数。 </P >

我宁愿用lower_case_with_underscores方法的变量和函数的测定方法和mixedCase让代码更可读的和明确的。因此下面的《禅院"明确的Python的是更好的比隐式"和"readability counts" </P >


我尝试使用的方法对personally camelcase mixedcase类,方法和函数。逗号分隔的变量通常是underscore(当我可以记得)。这路我可以告诉exactly一瞥什么在呼唤我,而一直寻找着的,一切都可以比的。 </P >


很多人宁愿underscores Python,但即使使用Python的I AM比现在更多的从右键5年,我仍然做不喜欢他们。他们刚刚看到我们的丑陋,但也许是在我的下一部好。 </P >

我就是从IT公司的婴儿般的camelcase更好的方式是与更好的模式名,它看起来有更多的逻辑对SomeClass.doSomething()SomeClass.do_something()。如果你看一看,在全球周围的指标在Python模块,你都会发现,这是由于到的事实,这是一个图书馆,从各种来源收集和没有的东西,那grew overtime是由太阳公司研制开发的一类与代码编码规则。我会说:"你在网上使用的底什么样更好的问题,这只是一部人员的味道。 </P >


关于@johnteslade的回答。谷歌的python风格指南有一些非常简洁的建议,

避免姓名

  • 单字符名称,计数器或迭代器除外
  • 任何包/模块名称中的破折号(-)
  • \__double_leading_and_trailing_underscore__ names(python保留)

命名约定

  • "内部"是指模块内部或类内受保护或私有。
  • 预加一个下划线(u)支持保护模块变量和函数(不包括import*from)。在实例变量或方法前面加上一个双下划线(uuuu),可以有效地使变量或方法对其类私有(使用名称管理)。
  • 将相关类和顶级函数放在一个模块中。与Java不同,没有必要将自己限制在每个模块的一个类上。
  • 类名称使用CapWords,模块名称使用lower_with_under.py。尽管存在许多名为CapWords.py的现有模块,但现在不鼓励这样做,因为当模块碰巧以类命名时,会令人困惑。(等等——我写过import StringIO还是from StringIO import StringIO

从guido的建议中得出的指导方针enter image description here


"这是一个关于纸:http:/ / / / / www.cs.kent.edu ~ jmaletic icpc2010-camelcaseunderscoreclouds.pdf票据 </P >

热释光;它是蛇_博士说,在更多的情况比camelcase可读的。这就是为什么现代语言的使用(或不应该使用)的蛇,只要他们能。 </P >


在通常的编码风格的鸭子一个组织的内部政策/公约的标准,但我认为在一般情况下,在_ _ _ underscore风格(也叫蛇_分级机_案例),是最常见的在Python。 </P >


一个后续的《公约typically,用在《语言的标准程序库。 </P >