来自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 >
- pep=python增强建议。
- 必须使用下划线!
- 混合酶是非常可读和令人愉快的眼睛。我对python没有大括号没意见,但对没有大括号没意见;也许我会的。但是下箱的情况很难看。示例如下:>>>>thisismixedcasevariable and>>>this_is_lower_case_underline_filled_variable now as they say about taste,to each his own.
- 我希望python标准库遵循这些指导原则,这真是一团糟:/
- 是否鼓励…我会并且希望其他人也会这样,这样我们就可以得到一些丑陋的一致性。
- 函数参数名(尤其是关键字参数)如何?政治公众人物8并没有明确表示。我也用小写字母加下划线。还是首选不带下划线的小写字母?
- 使用下划线的唯一问题是不能双击选择变量或函数名…您必须手动选择文本。有点烦人。
- @Rickyrobinson你用的是什么死脑筋的代码编辑器,它不知道下划线会延续一个词吗?很多免费的。如果没有可用的IDE,我使用Notepad++。为此,可以下载一个用于Python编辑的模板。(其他人可以推荐更有用的免费下载。)
- 我将gedit与源代码浏览器插件一起使用。
- 我发现的一点是,如果你打字速度相当快,对我来说,较低的函数名打字比较低的函数名慢50%。
- 我确实遵循惯例,但我真的讨厌每种语言都必须为每件事发明稍微不同的惯例。函数/方法的例子——AbsolutelyStupid(Cα)、绝对UsTysUpID(Java)、绝对Upple(Python)(PythyLyFuy)、绝对的愚蠢(我不记得)和ABSOST(C++ STD::)
- 我抛出了一个sed命令,将mixedcase(但不是capitalwords)转换为小写,并加下划线,以防有人发现它有用,例如按照您喜欢的方式执行,然后以pep 8首选的方式释放它:stackoverflow.com/questions/23607374
- 下划线样式的一个例子是,您可以更好地使用一个字母单词。例如,findMeAClass可能比find_me_a_class更丑。
- 我发现,在科学计算中,所有小写变量名的约定都不适用,在科学计算中,经常会遇到用大写字母表示的著名常量、张量等。
- 请注意,该指导方针说"为了提高可读性而必要"。因此,如果看起来更好,也可以不使用下划线连接。所以:小写字母"u"加下划线,也可以是,小写字母"u"加下划线,"timestamp"中的utcFromTimestamp可以是utcFromTimestamp
- 标准是遵循它们的,而不是质疑它们。我不支持那些说"这个标准太差劲了"的人。我会制定我自己的标准"在非常高的尊重。也就是说,规则:以东十一〔二〕使整个规则毫无意义。什么样的标准告诉你"做X…除非你不"…?
- @RR PEP8是一个"风格指南",它将自己描述为一个惯例,而不是标准。它还清楚地解释了不总是遵循这些"规则"的原因。
- @Andreasdr一方面,你是对的,但另一方面,每个命名约定都有一个"默认"案例约定的概念。所以,camelcase会让你把euler数的"e"大写。在这一点上,你可以说它不再是一个字母字符,而是作为它自己的符号。顺便说一句,这就是为什么这些符号倾向于用斜体或其他形式的偏移(例如,用于拉普拉斯变换的草书L)。
- 这可能有点偏离主题,因为我关注的是类的命名约定,但是:当人们说类的样式约定是大写的时,这是否意味着这不仅适用于定义,也适用于类实例?
- 我看不到遵循PEP 8的好处,而JavaScript、PHP、SWIFT、Java和其他语言大多使用CAMELSE方法。你不应该为每种语言改变你的编码风格,这太愚蠢了。一般来说,camelcase是更好的选择,比如code.wordpress.com/2011/02/10/…
- 别那么快,@tomsawyer!该博客链接的文章发现,camel case的准确性更高,但找到"用camel case样式编写的标识符需要0.42秒的时间",但camel case的培训确实使我们更快地使用这种样式。(见第7-8页,共。所以camel的例子比所有的都慢,但是当有相似的变量时更安全——正如作者指出的,这是一个非常狭窄的实验设置。
- @亚历克西斯,我没说哪一个打字更快。我只想说的是改变每种语言的编码风格是一件愚蠢的事情。尤其是在JSON时代,camelcase无处不在google.github.io/styleguide/jsoncstyleguide.xml
- 实际上不是关于打字,而是关于在其他单词中找出标识符。但你是对的,无论你朝哪个方向走,改变风格都是昂贵的。
- 为什么忽视后续工作?wordpress.com/2013/02/16/…第一项研究发现阅读camel案例需要13.5%的时间,而第二项则需要20%的时间。骆驼壳应该改名为"蜗牛壳"!
- Camelcase Rockspy与程序连接
- 值得注意的是,在一个叫做"愚蠢的一致性是弱智的流浪汉"的章节中,同样的文档中写道:"然而,知道什么时候不一致——有时候风格指南建议不适用。当有疑问时,运用你最好的判断力。看看其他的例子,决定什么看起来最好。别客气问了!"
谷歌的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 >
- a)我喜欢例子-谢谢。b)驼色和下划线的不吸引人的混合?但是:作为对python及其更灵活的数据模型的新手,我敢打赌google指南背后有着坚实的思想……
- @马修康奈尔混合并不坏,只要你坚持它。如果您知道函数有下划线,而类没有下划线,那么它实际上使可读性变得更容易。
- 我唯一要改变的是camel函数名(functionname)——它将帮助很多reading dir(module)区分可调用和变量。
- 和类常量名称
- @MatthewCornell我不认为它与Python有任何关系。Go实际上强制执行任意的美丽标准,如果你不遵守它们的花括号约定,那么它将无法编译。从本质上讲,这是一个掷骰子决定某人是否真的有一个仔细的想法,或者只是真的喜欢他们做事的方式。
- @Marcin ou Koss还可以为类方法使用methodname来区分它们和属性。
- 是否将常量静态属性视为全局常量名称?它不完全是全局的,因为它在类的范围内。
- 链接的Google样式指南已弃用。最新消息:github.com/google/styleguide/blob/gh-pages/pyguide.md
Goodger(大卫在"代码pythonista这里像一个"describes PEP)为8的建议如下: </P >
-
joined_lower函数的方法,方法, 变量的属性 </P >
-
joined_lower或ALL_CAPS方法 常数 </P >
-
StudlyCaps类的方法 </P >
-
camelCase只对符合今天 预现有的公约 </P >
- +1个视觉示例。虽然我看不出pep8在哪里建议用joined_lower表示常量,但"所有大写字母都用下划线分隔单词"。对新的枚举特性也很好奇。
- 对于几乎所有语言的类来说,StudlyCaps for classes是一个很好的通用规则。那么,为什么有些python内置类(比如datetime.datetime不遵循这个约定呢?
- @普拉德耶里:不幸的是,unittest.TestCase.assertEqual和朋友们也不遵守蛇案公约。事实上,Python标准库的某些部分是在约定固化之前开发的,现在我们仍然坚持使用它们。
- camelcase之所以令人困惑,是因为有人说它是"camelcase"(也称为"mixedcase"),也有人说它是"camelcase"(也称为"studlycaps")。例如,PEP提到"camelcase",而您提到"camelcase"。
作为《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 >
- 这在08年的时候可能是真的,但现在几乎所有的主要图书馆都使用PEP8命名约定。
作为对上述8 lower_case_with_underscores说,PEP方法使用的变量,方法和函数。 </P >
我宁愿用lower_case_with_underscores方法的变量和函数的测定方法和mixedCase让代码更可读的和明确的。因此下面的《禅院"明确的Python的是更好的比隐式"和"readability counts" </P >
- +1我切换这两个变量(我对变量使用mixedcase),但是这样的所有东西都更加明显,这有助于使它立即变得明显,特别是因为可以传递函数。
- 尽管"可读性"非常主观。我发现使用下划线的方法更易读。
- 您的偏好是我最初的直觉来自多年的Java开发。我喜欢对变量使用u,但从我的角度来看,它在函数和方法上看起来有点滑稽。
我尝试使用的方法对personally camelcase mixedcase类,方法和函数。逗号分隔的变量通常是underscore(当我可以记得)。这路我可以告诉exactly一瞥什么在呼唤我,而一直寻找着的,一切都可以比的。 </P >
- camel case以小写字母iirc开头,类似"camel case"。
- 我认为CrystalAttice是正确的——至少,他的用法与pep8(camelcase和mixedcase)中的用法一致。
很多人宁愿underscores Python,但即使使用Python的I AM比现在更多的从右键5年,我仍然做不喜欢他们。他们刚刚看到我们的丑陋,但也许是在我的下一部好。 </P >
我就是从IT公司的婴儿般的camelcase更好的方式是与更好的模式名,它看起来有更多的逻辑对SomeClass.doSomething()比SomeClass.do_something()。如果你看一看,在全球周围的指标在Python模块,你都会发现,这是由于到的事实,这是一个图书馆,从各种来源收集和没有的东西,那grew overtime是由太阳公司研制开发的一类与代码编码规则。我会说:"你在网上使用的底什么样更好的问题,这只是一部人员的味道。 </P >
- 我来自Java背景,我发现下划线冗长而不吸引人,只有后者才是观点。命名在某些方面是可读性和简洁性之间的平衡。Unix做得太过分了,但是它的en.wikipedia.org/wiki/domain-specific_语言是有限的。camelcase是可读的,由于上限,但没有额外的字符。2C
- 对于我来说,下划线在函数/方法中很有吸引力,因为我把每个下划线都看作是虚拟(在我的头脑中)名称空间的分隔符。这样我就可以很容易地知道如何命名我的新函数/方法:make_xpath_predicate、make_xpath_expr、make_html_header、make_html_footer。
- 您不(通常)调用SomeClass.doSomething()(静态方法通常很少),您通常调用an_instance.do_something()。
关于@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的建议中得出的指导方针
"这是一个关于纸:http:/ / / / / www.cs.kent.edu ~ jmaletic icpc2010-camelcaseunderscoreclouds.pdf票据 </P >
热释光;它是蛇_博士说,在更多的情况比camelcase可读的。这就是为什么现代语言的使用(或不应该使用)的蛇,只要他们能。 </P >
- 有趣的是,它还说,"这项研究的结果可能不一定适用于嵌入在源代码中的标识符。当嵌入到编程构造中时,camel-cased标识符完全有可能充当更好的格式塔元素。"
在通常的编码风格的鸭子一个组织的内部政策/公约的标准,但我认为在一般情况下,在_ _ _ underscore风格(也叫蛇_分级机_案例),是最常见的在Python。 </P >
一个后续的《公约typically,用在《语言的标准程序库。 </P >