gpt4 book ai didi

python - 未定义全局名称,尽管模块已导入

转载 作者:太空宇宙 更新时间:2023-11-04 10:51:24 25 4
gpt4 key购买 nike

我正在调用一个函数 (read_param),它依赖于在主脚本 (master.py) 的文件 (libfun.py) 中定义的“re”模块。当我这样做时,我得到一个 NameError:

NameError: global name 're' is not defined

我在master脚本中导入了're'模块,但是我导入的模块中的函数似乎无法使用。我不想从函数本身中导入“re”,因为这看起来很浪费。为什么会这样?

(这是一个最小的例子,不是我的实际代码):

libfun.py:

def read_param(paramname, paramfile):
# code here depends on re module, e.g. calling re.split()

ma​​ster.py:

#!/usr/bin/env python2

import re
import libfun as lf

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

最佳答案

你在倒着看问题。模块应该是独立的,因此它们需要管理自己的所有依赖项。

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

正确的做法是在libfun.py 的顶部import re。你不需要在 master.py 中导入它,除非你在 master.py 本身的主体中使用 re

关于python - 未定义全局名称,尽管模块已导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13610728/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com