命名Python模块有什么要求?

6 投票
3 回答
6868 浏览
提问于 2025-04-18 11:27

我最近在看一本书,叫做《用最难的方式学Python》,算是给自己复习一下。为了方便,我把每个例子都命名成 #.py(# 是练习的编号),这样一直用着也没问题,直到我看到第25个练习,这个练习需要你通过解释器导入一个你刚创建的模块。结果我尝试后,出现了以下情况:

>>> import 25
  File "<stdin>", line 1
    import 25
            ^

SyntaxError: invalid syntax

我试着把文件重命名为 ex25.py,然后就能正常工作了(>>> import ex25)。我想知道,Python模块的命名有什么要求呢?我查了一下官方文档这里,但没看到提到有什么限制。

补充:iCodez、Pavel 和 BrenBarn 三个回答都提供了不错的资源,帮助解答了这个问题的不同方面。最后我选择了 iCodez 的回答,因为它是第一个回答。

3 个回答

3

严格来说,你可以把Python文件命名成任何你想要的名字。不过,如果你想用import语句来导入这个文件,文件名就得符合Python的命名规则,也就是要像变量名那样有效。简单来说,文件名只能包含字母、数字和下划线,而且不能以数字开头。这是因为import语句的语法要求模块名必须是一个有效的标识符。

所以你在做需要导入的练习之前没有发现这个问题。你可以通过命令行用python 123.py来运行一个数字开头的Python脚本,但你无法导入这个模块。

4

关于什么可以作为有效的标识符(比如变量名、模块名等)的具体规则,可以在这里找到:https://docs.python.org/dev/reference/lexical_analysis.html#identifiers

在你的情况下,这句话是最相关的:

在ASCII字符范围内(U+0001..U+007F),有效的标识符字符和Python 2.x是一样的:包括大写字母和小写字母A到Z,底线_,还有除了第一个字符以外的数字0到9。

10

你用 import 语句 导入的模块,必须遵循和变量名(标识符)一样的命名规则。具体来说,它们必须以字母1或下划线开头,后面可以由字母、数字2和/或下划线组成。

你可能还会对 PEP 8 感兴趣,这是Python代码的官方风格指南,它对模块名称有这样的建议:

模块的名字应该简短,并且全部使用小写字母。如果使用下划线能让名字更容易读懂,那是可以的。Python包的名字也应该简短,全部使用小写字母,不过不太建议使用下划线。


1 字母是ASCII字符 A-Za-z
2 数字是ASCII字符 0-9

撰写回答