来自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是否有更可取、更明确的编码风格?
来自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是否有更可取、更明确的编码风格?
当前回答
@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?")
指南源自圭多的建议
其他回答
参见Python PEP 8:函数和变量名:
函数名应该是小写的,单词之间用下划线分隔,以提高可读性。 变量名遵循与函数名相同的约定。 mixedCase只允许在已经是流行风格的上下文中使用(例如threading.py),以保持向后兼容性。
编码风格通常是组织内部策略/约定标准的一部分,但我认为一般来说,all_lower_case_underscore_separator风格(也称为snake_case)在python中最常见。
正如Python代码风格指南所承认的那样,
Python的命名约定 图书馆有点乱,所以我们 永远不能完全一致
注意,这只是指Python的标准库。如果他们不能保持一致,那么几乎没有希望为所有Python代码拥有一个普遍遵守的约定,不是吗?
从这一点,以及这里的讨论,我可以推断,如果一个人在过渡到Python时继续使用例如Java或c#的(清晰而完善的)变量和函数命名约定,这并不是一个可怕的罪恶。当然,要记住,最好是遵循代码库/项目/团队的流行风格。正如Python风格指南所指出的,内部一致性是最重要的。
尽管把我当异教徒看待吧。:-)和OP一样,我不是一个“Pythonista”,至少现在还不是。
无论是否在课堂上或在课堂外:
变量和函数小写,如下所示:
name = "John"
def display(name):
print("John")
如果它们多于一个单词,则用下划线“_”分隔,如下所示:
first_name = "John"
def display_first_name(first_name):
print(first_name)
并且,如果一个变量是一个常量,它是大写的,如下所示:
FIRST_NAME = "John"
@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?")
指南源自圭多的建议