Python符号?

3 投票
6 回答
3988 浏览
提问于 2025-04-15 13:03

我刚开始学习Python,想知道应该用什么样的命名方式。我看过关于Python命名的PEP 8指南,里面大部分内容我都同意,除了函数名称(我更喜欢用混合大小写的风格)。

在C++中,我使用一种修改过的匈牙利命名法,这种命名法不包含类型信息,只包含变量的作用域(比如,lVariable表示局部变量,mVariable表示类的成员变量,g表示全局变量,s表示静态变量,in表示函数的输入,out表示函数的输出)。

我不知道这种命名风格有没有名字,但我在想在Python中不使用这种命名风格是否是个好主意。我对Python还不是特别熟悉,所以你们可能会发现一些我想不到的问题。

我也很想知道你们对此的看法 :) 有些人可能会说这样会让代码不太好读,但我已经习惯了,没有这些标签的代码对我来说反而更难读。

6 个回答

4

我在代码中违反了PEP8规范。我使用了:

  • 方法和函数用小写驼峰命名法(lowercaseCamelCase)
  • 以_开头的小写驼峰命名法来表示“私有”方法
  • 变量用下划线加空格的方式(underscore_spaced)
  • 以_开头的变量表示“私有”的实例变量(属性)
  • 类和模块用大写驼峰命名法(CapitalizedCamelCase),不过我正在转向小写模块命名

我一直不喜欢匈牙利命名法。我觉得变量名应该简单明了,能提供足够的信息,让人清楚它在哪里用(哪个范围)以及它的目的是什么,容易阅读,更关注它所指代的意义,而不是那些技术上的复杂术语(比如类型)。

我违反这些规范的原因主要是出于实际考虑和之前的经验。

  • 在C++和Java中,类通常用大写驼峰命名法,而成员函数用小写驼峰命名法。
  • 我曾在一个代码库中工作,使用下划线前缀来表示私有,但并不是特别私有。我们不想搞乱Python的名称改编(双下划线)。这让我们在单元测试时可以稍微违反一些规范,查看内部类的状态。
7

使用PEP-8。这在Python界几乎是通用的规范。

8

(几乎每个Python程序员都会说这样会让代码变得不易读,但我已经习惯了,没有这些标签的代码反而让我觉得更难读)

我帮你修正一下。

说真的,这样做对你有帮助,但会让其他试图阅读你代码的Python程序员感到困惑和烦恼。

其实这并不是特别必要,因为Python本身的特性就让很多事情变得清晰。例如,你绝对不需要用“mVariable”这种形式,因为在Python中是显而易见的:

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.foo 还是 myinstance.foo 来访问成员变量,始终都能清楚地知道它是一个成员。

其他情况可能没有那么明显,但如果你的代码不够简单,以至于读者在阅读一个函数时不能记住“'names'变量是一个参数”,那你可能就做错了什么。

撰写回答