Python模块命名需要满足哪些要求?

6

作为一种复习,我一直在学习《笨办法学Python》。然而,与其将每个例子命名为ex#.py(#是练习的编号),我只是将它们命名为#.py。这样做一直很顺利,直到我遇到了第25个练习,需要通过解释器导入一个刚创建的模块。当我尝试这样做时,发生了以下情况:

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

SyntaxError: invalid syntax

我尝试将文件重命名为ex25.py,然后它按预期工作(>>> import ex25)。我想知道Python模块的命名要求是什么?我查看了官方文档here,但没有看到任何限制。
编辑:iCodez、Pavel和BrenBarn的三个答案都提供了有用的资源,并帮助回答了这个问题的不同方面。最终我选择了iCodez的答案作为正确答案,仅仅因为它是第一个答案。

参见:Python 3中的相对导入 - Gabriel Staples
3个回答

10
使用import语句导入的模块必须遵循与变量名(标识符)相同的命名规则。具体来说,它们必须以字母1或下划线开头,然后完全由字母、数字2和/或下划线组成。
您可能还对Python代码的官方样式指南PEP 8中有关模块名称的内容感兴趣:

模块应具有短小的全小写名称。如果下划线可以提高可读性,则可以在模块名中使用下划线。Python包也应具有短小的全小写名称,虽然不建议使用下划线。


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


4
在Python中,用作变量、模块名等的有效标识符(即名称)必须符合特定规则。你可以在这里找到明确的规则:https://docs.python.org/dev/reference/lexical_analysis.html#identifiers
对于您的情况,下面是相关句子:
在ASCII范围内(U+0001..U+007F),标识符的有效字符与Python 2.x相同:大写字母A到Z、小写字母a到z、下划线_以及数字0到9(第一个字符除外)。

2
严格来说,Python文件可以随意命名。但是为了使用import语句导入它,文件名必须是有效的Python标识符——也就是你可以用作变量名称的东西。这意味着文件名只能使用字母数字和下划线,不能以数字开头。这是因为import语句的语法要求模块名称是一个标识符。
这就是为什么在导入模块之前你没有发现问题的原因。你可以通过python 123.py在命令行中运行一个数字命名的Python脚本,但你将无法导入该模块。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接