【问题标题】:Python Import function from file [duplicate]从文件中导入Python函数[重复]
【发布时间】:2013-11-30 16:39:33
【问题描述】:

我在名为8.py 的文件中有一个函数ispalindrome,如何导入它? 如果我可以使用此名称制作 .py 文件,为什么 8 是无效名称

from 8 import ispalindrome

【问题讨论】:

  • 这应该可以正常工作。可能会失败吗?
  • 将文件从 8 重命名为其他名称!
  • 8不是 Python 模块的有效名称。他们需要以下划线或字母开头。解决这个问题,你会好起来的。
  • 我相信这里已经回答了stackoverflow.com/questions/9090079/…

标签: python import


【解决方案1】:

Python 模块名称必须是有效的标识符。 “8”不是有效的标识符。尝试“8”或“file8”或不以数字开头的任何内容。

【讨论】:

  • +1 因为__import__没有毒害年轻人的思想
【解决方案2】:

最佳答案:重命名您的文件。 ;)

拥有一个名为8.py 的文件会破坏文件的naming convention 以及Python 的language grammar(您在导入它时遇到的麻烦说明了为什么这些规则已经到位)。

通常,您应该使文件名与变量相同:

  1. 它们以字母或下划线开头。
  2. 之后,它们完全由字母、数字和下划线组成。
  3. 它们是小写的。
  4. 它们很短(没有人喜欢导入一个大名称)。

但是,如果您必须将文件命名为8.py,则可以使用__import__ 来导入它。

为了演示,我制作了一个简单的8.py 文件,它具有以下功能:

def func():
    return True

这是我运行的测试:

>>> from 8 import func
  File "<stdin>", line 1
    from 8 import func
         ^
SyntaxError: invalid syntax
>>> x = __import__("8")
>>> x.func()
True
>>>

如您所见,使用__import__ 有效。但是,它被认为是草率的,通常应该避免。我强烈建议您注意我的第一个回答并尽可能重命名文件。

【讨论】:

  • 第一部分+1。
  • 是的,即使向新手用户提及第二部分也要投反对票。
  • 好吧,在您添加免责声明后删除了反对票。不过,这里的主题应该是命名规则(为什么8 是无效名称?),而不是导入诡计。
  • @LukasGraf - 在那里。我添加了一个巨大的免责声明,并链接到 PEP 文档。我给了新手所有我能做的泡沫包装纸。 :)
  • @iCodez 好多了。但是,不以数字开头的标识符不仅仅是 PEP8 鼓励的约定,它是lanuage grammar 中定义的要求。因此,通过拒绝__import__ 仍然导入这样的模块是不应该做的事情,即使是知道他在做什么的人也是如此。 __import__ 有其合法用途(例如,按名称动态导入模块),但我认为这不是其中之一。
猜你喜欢
  • 1970-01-01
  • 2016-10-11
  • 2019-12-03
  • 1970-01-01
  • 2019-01-24
  • 2021-01-09
  • 2022-08-19
  • 2011-08-19
  • 2021-05-26
相关资源
最近更新 更多