Python模块命名有什么要求?

问题描述 投票:0回答:3

我一直在经历艰难地学习Python。然而,我并没有将每个示例命名为

ex#.py
(其中
#
是练习的编号),而是只是将它们称为
#.py
。这工作得很好,直到我到达练习 25,它要求您导入刚刚通过解释器创建的模块。当我尝试这样做时,会发生以下情况:

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

SyntaxError: invalid syntax

我尝试将文件重命名为

ex25.py
,然后它按预期工作(
>>> import ex25
)。 Python 模块的命名要求是什么?我查看了官方文档here,但没有看到它提到任何限制。

python module naming-conventions
3个回答
11
投票

使用

import
语句导入的模块必须遵循为变量名称(标识符)设置的相同命名规则。 具体来说,它们必须以字母1或下划线开头,然后完全由字母、数字2和/或下划线组成。

您可能还对 Python 代码的官方风格指南 PEP 8 对模块名称的说法感兴趣:

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


1 字母是 ASCII 字符

A-Z
a-z

2 数字是 ASCII 字符
0-9


4
投票

严格来说,您可以将 Python 文件命名为任何您想要的名称。 但是,为了使用

import
语句导入它,文件名必须是有效的 Python 标识符——您可以将其用作变量名。 这意味着它必须仅使用字母数字和下划线,并且不能以数字开头。 这是因为 import 语句的
grammar
要求模块名称是标识符。

这就是为什么直到进行需要导入的练习时您才发现问题。 您可以使用

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。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.