你是否在Python的方法和函数中经常看到CamelCase?

4
PEP 8风格指南(Python)建议方法名应为小写,并且有时方法名可能包含下划线。有经验的Python程序员是否经常遇到CamelCase(以大写字母开头)的方法?

1
方法名使用首字母大写驼峰命名法?这简直是疯了。就连Java/C#也不这样做(也许你指的是混合大小写命名法?)。 - user395760
2
@delnan:我相信许多C#约定规定公共方法使用PascalCase或“CamelCase with leading capitals”(也就是俗称的“双峰驼峰”)命名。另一方面,Sun公司的Java编码约定确实规定方法使用camelCase而不是带有首字母大写的形式(真正的驼峰命名,也就是“单峰驼峰”)。 - Jeet
1
@delnan:在C#/.NET中,几乎所有公共符号都以大写字母开头,包括类、方法、常量和枚举。 - Ferdinand Beyer
1
@Jeet @Ferdinant 不用在意 C# 部分,我改正了。 - user395760
1
“不,不经常发生,但确实会发生。” 你难道不能想到这吗? - Lennart Regebro
编写camelCase是有害的。请阅读PEP 8和关于logging的内容(https://dev59.com/zGAg5IYBdhLWcg3w7uyk)。 - 0 _
6个回答

7
根据我的经验,模块的命名约定取决于以下因素:
  • 如果它是一个新编写的、仅限Python的模块,或者作者特别关注“Pythonic code”(非常普遍!),则命名通常遵循Python风格指南中的建议。
  • 初学Python的人通常会坚持自己喜欢的风格,特别是如果他们有Java/C#/...背景。
  • 一些公司更喜欢跨语言使用一致的命名风格。
  • 一些Python模块从其他语言(尤其是线程和xml.dom模块中的Java)中采用API,包括命名风格。
  • C/C++库的Python绑定通常保留原始命名(例如PyQt的camelCase或VTK的PascalCase)。
我认为最常见的方法是在Python代码中找到PascalCase的方式是最后一点。

我喜欢@6502的“样式即实质”的链接,但我必须选择一个答案,这是一个好的选择。 - H2ONaCl

3

我在Python中以驼峰式命名而臭名昭著,之前是从Java转来的。但现在不再这样做了。我更喜欢“method_name”风格的大写方式。

我知道一个Python库,它肯定有驼峰式命名的方法名称,那就是xml.dom包及其子包(如xml.dom.minidom)。


3
xml.dom中使用驼峰式命名的原因是DOM标准采用了驼峰式命名。 - pafcu

1

我发现自己在方法名上经常使用camelCase(我在属性名上使用underscored_names)。我养成这个习惯的主要原因可能是因为我一直在使用Qt。

如果Python强制规定命名约定和四个空格缩进,可能会更简单... 风格即实质


2
Python已经因其“强制约定”(如缩进)而让人望而却步。如果需要空格,它可能会失去更多用户(比如我)。然而,还有一些其他语言强制要求大写。Haskell就是这样一种语言的例子。 - pafcu
4
刚开始学习Python的时候,我非常疯狂地使用了两个空格缩进的风格。多么愚蠢啊。后来我才意识到,死守一个非标准惯例毫无意义,必须得有一个聪明的编辑器重新调整我的程序,才能发现其中的问题。 当初接触Python时,可能每个人都会有一种“什么?重要的是空格!?他们认真的吗?”的感觉。但也同样真实的是,我从未遇到过一个聪明的程序员,他们不久之后就告诉我Python语法确实很好。 或许这会让某些人望而却步……但聪明的人不会。 - 6502
3
人与人不同,不同的人喜欢不同的风格。我喜欢看“漂亮”的代码,但就像艺术一样,美在于观者的眼中。有多少人批评使用非标准风格的艺术品?很多。这是否意味着他们是正确的?不是的。个人认为我喜欢Python的语法,但我并不傲慢到认为任何不喜欢它的人都“不聪明”。 - pafcu
2
pafcu,我真的很喜欢你对这个答案的评论。虽然我非常喜欢Python及其语法,但我想许多人会同意,它的严格规则阻止了其他语言可以提供的某些功能和用途。例如,Ruby风格的块(匿名函数/多语句lambda)与Python的缩进/无结束语句政策几乎是不可调和的。 - Ferdinand Beyer

1

个人而言,我不太喜欢在Python中使用驼峰命名法(或者在任何语言中都不太用——我的另一种日常使用语言是C),但我见过有人这样做。我曾经不得不这样做,因为我们使用了混合代码库(一些Python和大量以前编写的Matlab代码),而Matlab代码使用了驼峰命名法,尽管我不确定为什么,因为Matlab似乎也不太赞成驼峰命名法。


1
根据我的经验,有些库使用驼峰命名法,但这并不是最常见的一种。
我个人鼓励遵循Python标准(如PEP008所定义),原因非常简单:每个具有不同编程语言背景的人都可能倾向于“强制”自己的代码风格,这是非常危险的,想象一下Java粉丝和PHP粉丝一起编写Python代码...可能会很有趣。
然而,如果已经有了一个提议的标准,为什么不遵循它呢?就像在Java中,每个人都使用驼峰命名法一样,为什么?因为这是惯例。
最后,你有很酷的工具,如pylint,默认配置为检查PEP008语法。

0
一些库采用这种约定。许多程序员来自使用 PascalCase 作为方法名称的背景(Pascal Case 实际上是您提到的首字母大写的 camelCase 的特殊情况)。
按照 Python 风格指南,这种写法是不正确的,因此我建议不要采用这种方式编写代码。

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