Python 表示法?

3
我刚开始使用Python,正在考虑应该使用哪种符号。我读了有关Python符号的PEP 8指南,除了函数名称(我更喜欢mixedCase风格)之外,我基本都同意该指南的大部分内容。
在C++中,我使用了一种修改后的匈牙利符号表示法,其中不包括有关类型的信息,而只包括变量的作用域(例如,本地变量的lVariable和类成员变量的mVariable,全局变量的g,静态变量的s,在函数输入为in,函数输出为out)。
我不知道这种符号表示法是否有名称,但我想知道在Python中是否不使用这样的符号表示法是一个好主意。我对Python并不非常熟悉,因此你们可能会看到我无法想象的问题。
我也很想知道你们的观点。有些人可能会说它使代码难以阅读,但我已经习惯了,没有这些标签的代码对我来说就更难以阅读。

好的,这确实是一个开源项目。而且我已经基本上下定决心了(顺便感谢所有的回答)。我会坚持使用PEP-8,除了下划线分隔的内容;我就是无法处理它 :P - levesque
6个回答

8
几乎每个Python程序员都会说,使用这些标签会使代码变得不太易读,但我已经习惯了。对我来说,没有这些标签的代码才是不易读的代码。
修复了一下。
但是,认真地说,这样做会帮助你,但会让其他尝试阅读你的代码的Python程序员感到困惑和恼怒。
这也不是很必要,因为Python本身的工作方式。例如,在Python中,你永远不需要你的“mVariable”形式,因为它是显而易见的。
class Example(object):
    def__init__(self):
        self.my_member_var = "Hello"

    def sample(self):
        print self.my_member_var

e = Example()
e.sample()
print e.my_member_var

无论您如何访问成员变量(使用self.foomyinstance.foo),它始终清楚地是一个成员。
其他情况可能不那么明显,但如果您的代码不够简单,以至于读者在阅读函数时无法记住“'names'变量是参数”,那么您可能做错了什么。

2
+1:放弃匈牙利命名法。多余的字母是浪费的。只需按其用途命名变量--忘记范围、类型、大小、重量、颜色或任何其他属性。 - S.Lott
2
Google的样式指南也推荐这样做:http://google-styleguide.googlecode.com/svn/trunk/pyguide.html - Otto Allmendinger

7

使用PEP-8规范。在Python世界中,这几乎是普遍的。


3
请务必这样做。早期定义标准的整个目的就是让人们遵循它。你真的要离题并用自己的方式命名吗?我曾经这样做,但很快意识到当IRC中的人根本不看我的代码时,这样做是错误的。 - jkp

4
我在我的代码中违反了PEP8规范。我使用:
  • 小写驼峰命名法(methods和functions)
  • _下划线+小写驼峰命名法(私有方法)
  • 下划线+空格(variables,任何类型)
  • _下划线+小写驼峰命名法(私有self变量(attributes))
  • 大写驼峰命名法(classes和modules,尽管我正在转向小写模块)
我从来不喜欢匈牙利命名法。变量名应该简单明了,提供足够的信息以清楚地说明它在哪个作用域中使用以及其目的,易于阅读,关注所指事物的意义,而不是其技术术语(例如类型)。
我违反规定的原因是出于实际考虑和先前的经验。
  • 在C++和Java中,惯例是为类使用大写驼峰命名法,为成员函数使用小写驼峰命名法。
  • 我曾经在一个代码库上工作,其中使用下划线前缀来表示私有,但并不是那么私有。我们不想干扰Python名称重整(双下划线)。这给了我们违反一些形式主义的机会,在单元测试期间窥视内部类状态。

3

2

这将取决于项目和目标受众。

如果您正在构建开源应用程序/插件/库,请遵循PEP指南。

如果这是您公司的项目,请遵循公司惯例或类似规定。

如果这是您自己的个人项目,则使用最适合您使用的约定。

希望这样说得清楚明白。


1

在自己的代码中,你应该保持一致的命名规则。但是,如果你打算将代码发布给其他开发人员,你应该遵守 PEP-8。

例如,在具有协作项目时,4个空格与 1 个制表符之间的区别非常重要。使用制表符提交代码到源代码库需要开发人员不停地争论空格问题(这在 Python 中是一个大问题)。

Python 和所有编程语言都有首选惯例,你应该学习它们。

Java 喜欢 mixedCaseStuff。

C 喜欢 szHungarianNotation。

Python 更喜欢用下划线分隔单词。

你可以编写带有 Python 类型函数名称的 Java 代码。
你可以用 javaStyleMixedCaseFunctionNamesThatAreSupposedToBeReallyExplict 的方式编写 Python 代码。

只要你保持一致就可以啦 :p


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接