来自c#背景,变量和方法名的命名约定通常是camelCase或PascalCase:

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

在Python中,我见过上面的情况,但我也见过使用下划线:

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

Python是否有更可取、更明确的编码风格?


当前回答

无论是否在课堂上或在课堂外:

变量和函数小写,如下所示:

name = "John"
def display(name):
    print("John")

如果它们多于一个单词,则用下划线“_”分隔,如下所示:

first_name = "John"
def display_first_name(first_name):
    print(first_name)

并且,如果一个变量是一个常量,它是大写的,如下所示:

FIRST_NAME = "John"

其他回答

就我个人而言,我尝试在类、mixedCase方法和函数中使用CamelCase。变量通常用下划线分隔(当我记得的时候)。这样我一眼就能知道我到底在调用什么,而不是所有东西看起来都一样。

列宁告诉过……我也是来自Java/ c#世界的。还有SQL。 仔细审视我自己,试图找到第一眼就能理解的复杂结构的例子,比如列表字典中的列表,其中所有东西都是对象。 对我来说,骆驼语或它们的变体应该成为任何语言的标准。在复杂句中应保留下划线。

大多数使用python的人更喜欢下划线,但即使我已经使用python 5年多了,我仍然不喜欢它们。我只是觉得它们很丑,但也许这就是我脑子里的爪哇。

I simply like CamelCase better since it fits better with the way classes are named, It feels more logical to have SomeClass.doSomething() than SomeClass.do_something(). If you look around in the global module index in python, you will find both, which is due to the fact that it's a collection of libraries from various sources that grew overtime and not something that was developed by one company like Sun with strict coding rules. I would say the bottom line is: Use whatever you like better, it's just a question of personal taste.

@JohnTESlade的回答更进一步。谷歌的python风格指南有一些非常简洁的建议,

避免使用的名字

除计数器或迭代器外的单字符名称 在任何包/模块名称中使用破折号(-) \ __double_leading_and_trailing_下划线名称(由Python保留)

命名约定

"Internal" means internal to a module or protected or private within a class. Prepending a single underscore (_) has some support for protecting module variables and functions (not included with import * from). Prepending a double underscore (__) to an instance variable or method effectively serves to make the variable or method private to its class (using name mangling). Place related classes and top-level functions together in a module. Unlike Java, there is no need to limit yourself to one class per module. Use CapWords for class names, but lower_with_under.py for module names. Although there are many existing modules named CapWords.py, this is now discouraged because it's confusing when the module happens to be named after a class. ("wait -- did I write import StringIO or from StringIO import StringIO?")

指南源自圭多的建议

如前所述,PEP 8要求对变量、方法和函数使用lower_case_with_下划线。

我更喜欢使用lower_case_with_下划线的变量和mixedCase的方法和函数,使代码更显式和可读。因此,遵循Python的“显式优于隐式”和“可读性很重要”的禅意。