命名python模块有哪些要求?

时间:2014-06-28 20:15:30

标签: python module naming-conventions

我一直在经历Learn Python The Hard Way作为一种复习。而不是命名每个例子ex#.py(其中#是练习的编号),然而,我只是称他们为#.py。这工作正常,直到我到Exercise 25,这要求您导入刚刚通过解释器创建的模块。当我尝试这个时,会发生以下情况:

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

SyntaxError: invalid syntax

我尝试将文件重命名为ex25.py,然后按预期工作(&gt;&gt;&gt; import ex25)。我想知道的是python模块的命名要求是什么?我查看了官方文档here,但没有看到它提到任何限制。

编辑:iCodez,Pavel和BrenBarn的所有三个答案都提供了很好的资源并帮助回答了这个问题的不同方面。我最终选择iCodez的答案是正确的,因为这是第一个答案。

3 个答案:

答案 0 :(得分:5)

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

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

  

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


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

答案 1 :(得分:4)

可以在此处找到允许作为有效标识符(变量,模块名称等)的明确规则:https://docs.python.org/dev/reference/lexical_analysis.html#identifiers

在您的情况下,这是相关的句子:

  

在ASCII范围内(U + 0001..U + 007F),标识符的有效字符与Python 2.x中的相同:大写和小写字母A到Z,下划线_和,除了第一个字符,数字0到9。

答案 2 :(得分:2)

严格地说,您可以根据需要为Python文件命名。但是,为了使用import语句导入它,文件名必须是有效的Python标识符 - 您可以将其用作变量名称。这意味着它必须只使用字母数字和下划线,而不是以数字开头。这是因为import语句的grammar要求模块名称为标识符。

这就是为什么在进行需要导入的练习之前没有看到问题的原因。您可以使用python 123.py从命令行运行带有数字名称的Python脚本,但您将无法导入该模块。