2014-06-28 63 views
3

我一直在通过Learn Python The Hard Way作为一种进修。然而,我没有命名每个例子ex#.py(其中#是练习的编号),我只是称它们为#.py。这工作得很好,直到我得到Exercise 25,这需要你导入你刚通过解释器创建的模块。当我尝试这会发生以下情况:命名python模块有什么要求?

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

SyntaxError: invalid syntax 

我试过重命名为ex25.py文件,并将它然后发挥预期(>>>进口EX25)。我想知道的是什么是python模块的命名要求?我看了一下官方文档here,但没有看到它提到任何限制。

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

回答

5

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

您还可能有兴趣在什么PEP 8,官方的风格指南Python代码,不得不说的模块名称:

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


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

3

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

这就是为什么你没有看到问题,直到你需要进行练习。您可以从命令行运行一个带有数字名称的Python脚本,其中python 123.py,但您将无法导入该模块。

4

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

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

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