嵌套功能导致麻烦

时间:2017-06-11 21:22:28

标签: python function module package

我有一个Python脚本。 我在这个剧本中有几个功能,我决定转到一个'包#39;主脚本旁边的文件夹。 在这个文件夹中,我创建了一个* .py文件,我放置了所有的功能。 我在'包裹中的此文件附近放置了一个空的 init .py夹。

使用以下命令启动主脚本代码时

from package_folder.my_functions import *

从该文件调用每个函数时,脚本运行良好。

但是当试图直接导入它时:

import package_folder.my_functions    

它似乎与上述技术一样好用。

原因似乎是在文件井 my_functions.py 中,我有一个需要另一个的函数,先前在该文件中声明。
我在这个需要另外一个功能的函数上有这个模糊的错误:

  

TypeError:' NoneType'对象不可调用

这是允许的,如果不允许,如何管理这种情况?

1 个答案:

答案 0 :(得分:0)

从模块导入*中使用通常不是一个好主意。通配符导入导致命名空间污染;您导入的名称多于您需要的名称,如果您不小心引用了导入的名称,则可能无法获得所需的NameError。

此外,如果该库的未来版本添加了其他名称,您最终可能会屏蔽其他名称,从而导致奇怪的错误:

示例

from my_mod1 import func1
from my_mod2 import *

如果您升级my_mod2并且它现在包含my_mod2.func1,则会替换第1行中的my_mod1.func1导入。