1

我正在调用一个函数(read_param),该函数取决于“re”模块,该模块在主脚本(master.py)的文件(libfun.py)中定义。当我这样做时,我得到一个 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()

大师.py:

#!/usr/bin/env python2

import re
import libfun as lf

lf.read_param('parameter', 'filename')
4

1 回答 1

4

您正在向后看问题。模块应该是自包含的,因此它们需要管理自己的所有依赖项。

想象一下,如果您有 15 个不同的脚本,所有这些都使用readparam(). 强迫这些脚本中的每一个import re,只是为了使用是没有意义的readparam()。您最终会导入它十五次,并且您需要阅读文档或源文件才能知道您必须导入它。

正确的做法是import relibfun.py. master.py除非您re在自身的主体中使用,否则您不需要将其导入master.py

于 2012-11-28T17:21:13.673 回答