我正在调用一个函数(read_param),它依赖于来自主脚本(master.py)的文件(libfun.py)中定义的're'模块。当我这样做时,我得到一个NameError:
NameError: global name 're' is not defined
我在主脚本中导入're'模块,但似乎我导入的模块中的函数无法使用它。我不想从函数本身导入're',因为这看起来很浪费。为什么会这样?
(这是一个最小的例子,而不是我的实际代码):
libfun.py:
def read_param(paramname, paramfile):
# code here depends on re module, e.g. calling re.split()
master.py:
#!/usr/bin/env python2
import re
import libfun as lf
lf.read_param('parameter', 'filename')
答案 0 :(得分:4)
你正在向后看这个问题。模块应该是自包含的,因此他们需要管理所有自己的依赖项。
想象一下,如果您有十五个不同的脚本,所有脚本都使用readparam()
。将每个脚本强制为import re
,只使用readparam()
是没有意义的。您最终会导入十五次,并且您需要阅读文档或源文件,甚至知道您必须导入它。
正确的方法是import re
顶部的libfun.py
。您不需要在master.py
中导入它,除非您在re
的正文中使用master.py
。