我有一个Python脚本。 我在这个剧本中有几个功能,我决定转到一个'包#39;主脚本旁边的文件夹。 在这个文件夹中,我创建了一个* .py文件,我放置了所有的功能。 我在'包裹中的此文件附近放置了一个空的 init .py夹。
使用以下命令启动主脚本代码时
from package_folder.my_functions import *
从该文件调用每个函数时,脚本运行良好。
但是当试图直接导入它时:
import package_folder.my_functions
它似乎与上述技术一样好用。
原因似乎是在文件井 my_functions.py 中,我有一个需要另一个的函数,先前在该文件中声明。
我在这个需要另外一个功能的函数上有这个模糊的错误:
TypeError:' NoneType'对象不可调用
这是允许的,如果不允许,如何管理这种情况?
答案 0 :(得分:0)
从模块导入*中使用通常不是一个好主意。通配符导入导致命名空间污染;您导入的名称多于您需要的名称,如果您不小心引用了导入的名称,则可能无法获得所需的NameError。
此外,如果该库的未来版本添加了其他名称,您最终可能会屏蔽其他名称,从而导致奇怪的错误:
示例强>
from my_mod1 import func1
from my_mod2 import *
如果您升级my_mod2
并且它现在包含my_mod2.func1
,则会替换第1行中的my_mod1.func1
导入。