【问题标题】:What are the requirements for naming python modules?命名python模块有什么要求?
【发布时间】:2014-06-28 20:15:29
【问题描述】:

我一直在通过Learn Python The Hard Way 进行复习。但是,我没有将每个示例命名为 ex#.py(其中 # 是练习的编号),而是将它们命名为 #.py。这一直很好,直到我到达Exercise 25,这需要您导入刚刚通过解释器创建的模块。当我尝试这样做时,会发生以下情况:

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

SyntaxError: invalid syntax

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

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

【问题讨论】:

    标签: python module naming-conventions


    【解决方案1】:

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

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

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


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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          猜你喜欢
          • 2019-12-12
          • 2011-11-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-11-14
          • 2016-05-16
          • 2021-11-13
          • 1970-01-01
          相关资源
          最近更新 更多