Python文件命名约定?


137

我已经看到了PEP-8的这一部分https://www.python.org/dev/peps/pep-0008/#package-and-module-names

我不清楚这是否指向模块/类/包的文件名。

如果我每个都有一个示例,文件名是否应该全部使用小写并带有下划线?或者是其他东西?


4
TL;博士:两班FooBar,并FooBiz可能在一个文件中同时去somepkg/foobar.py(这样的:from somepkg.foobar import FooBar),但类TimerError能去except/timer_error.py(因此from except.timer_error import TimerError),因为除去CamelCase有时会使字难读,因此snake_case可用于文件名。
迈克尔

Answers:


156

引用https://www.python.org/dev/peps/pep-0008/#package-and-module-names

模块应使用简短的全小写名称。如果模块名称可以提高可读性,则可以在模块名称中使用下划线。尽管不鼓励使用下划线,但Python软件包也应使用短小写全名。

对于课程

类名通常应使用CapWords约定。

功能(局部)变量名应该是:

小写,单词之间用下划线分隔,以提高可读性

有关模块,类和包之间的区别,请参见以下答案

  • Python模块只是一个Python源文件,可以公开类,函数和全局变量。
  • Python包只是Python模块的目录。

因此,PEP 8告诉您

  • 模块(文件名)应使用短小写全名,并且可以包含下划线;
  • 包(目录)应具有短的全小写名称,最好不带下划线;
  • 类应使用CapWords约定。

PEP 8告知名称应该简短 ; 这个答案很好地概述了在创建变量名时要考虑的内容,这些变量名也适用于其他名称(用于类,包等):

  • 变量名不是完整的描述符;
  • 在评论中添加细节;
  • 名称太具体可能意味着代码太具体;
  • 保持较短的范围以便快速查找;
  • 花时间思考可读性。

最后,Google Python样式指南中对命名约定进行了很好的概述。


5
而且我会尴尬地要求确认我的理解,模块包含类-因此您将在模块中使用类,并且在一个模块中可以有多个类?
darkace '16

6
是的,模块中可以有0、1或更多类。
agold '16

1
我很高兴在项目失控之前及时发现了这个问题,因为我所有的软件包都像我的班级一样遵循CapsWords约定。
Bas Jansen

1
@pypmannetjies这实际上是另一个问题,但是我要说的是,您应该首选长而易懂的名称,而不是短而又不易理解的名称。
agold

1
对于软件包名称,它表示“不鼓励使用下划线”,而不是禁止使用。在python哲学中,您应该遵循“虽然实践胜过纯度”的规则。当然,最好是找到一种方法,遵循规则实用(可能使几个包拆分名,some> long> name代替somelongname?)
Juh_

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.