我一直在经历艰难地学习Python。然而,我并没有将每个示例命名为
ex#.py
(其中 #
是练习的编号),而是只是将它们称为 #.py
。这工作得很好,直到我到达练习 25,它要求您导入刚刚通过解释器创建的模块。当我尝试这样做时,会发生以下情况:
>>> import 25
File "<stdin>", line 1
import 25
^
SyntaxError: invalid syntax
我尝试将文件重命名为
ex25.py
,然后它按预期工作(>>> import ex25
)。 Python 模块的命名要求是什么?我查看了官方文档here,但没有看到它提到任何限制。
严格来说,您可以将 Python 文件命名为任何您想要的名称。 但是,为了使用
import
语句导入它,文件名必须是有效的 Python 标识符——您可以将其用作变量名。 这意味着它必须仅使用字母数字和下划线,并且不能以数字开头。 这是因为 import
语句的 grammar要求模块名称是标识符。
这就是为什么直到进行需要导入的练习时您才发现问题。 您可以使用
python 123.py
从命令行运行具有数字名称的 Python 脚本,但您将无法导入该模块。
可以在这里找到允许成为有效标识符(变量、模块名称等)的明确规则:https://docs.python.org/dev/reference/lexical_analysis.html#identifiers
对于您的情况,这是相关的句子:
在 ASCII 范围内 (U+0001..U+007F),标识符的有效字符与 Python 2.x 中相同:大写和小写字母 A 到 Z、下划线 _ 和,除了第一个字符,数字 0 到 9。