0

一些我无法解决的 appengine 代码出现了小问题(可能只是因为太晚了)

我有一个名为 modules 的文件夹,其中包含以下项目:

-modules
 : __init__.py (blank)
 : checklogin.py
 : customhandlers.py
 : datastoretools.py
 : emailtools.py

在我的代码中,我使用了所有这些,因此我这样做是为了导入它们:

from modules import *

一切都可以使用电子邮件工具。这个:

emailtools.sendNotificationEmail('assignee',report,True)

导致此错误:

File "/home/tom/dev/ad-project/handlers/reporterhandler.py", line 42, in get
emailtools.sendNotificationEmail('assignee',report,True)
NameError: global name 'emailtools' is not defined

在我尝试使用它的任何地方都会发生这种情况,但是其他三个工作得很好,有什么想法吗?或者我应该只导入它们而不是使用*?

4

1 回答 1

1

这根本不应该工作。看来这个通配符不是你唯一使用过的。也许其他模块来自其他通配符。

在任何情况下,通配符都是不可取的,根据PEP 8

应避免通配符导入(来自 import *),因为它们使命名空间中存在哪些名称变得不清楚,从而使读者和许多自动化工具感到困惑。通配符导入有一个可辩护的用例,即重新发布内部接口作为公共 API 的一部分(例如,用可选加速器模块中的定义覆盖接口的纯 Python 实现,以及哪些定义将被被覆盖是事先不知道的)。

PS我假设您使用Windows,否则Modules无法像modules我想的那样导入。

于 2013-10-20T22:27:24.637 回答