命名Python模块有什么要求?
我最近在看一本书,叫做《用最难的方式学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。