Python:尝试在函数内使用“ re”时出现NameError

时间:2019-08-27 19:38:24

标签: python

我有一个名为main_plotter.py的脚本,如下所示:

import re

import numbs
numbs.getSquares("file.csv")

numbs.py是我从中导入的文件。看起来像这样:

def getSquares(sqfile):
        infile=sqfile
        base_name = re.split(".csv", infile)[0]
        print (base_name)

运行main_plotter.py时,我得到NameError: name 're' is not defined

为什么会这样?我尝试在global re语句之前添加import re,但这也无济于事。导入语句不是应该是全局的吗?任何帮助表示赞赏!

PS。如果将re导入numbs.py文件中,则代码将按预期运行。

1 个答案:

答案 0 :(得分:3)

Python中的“全局”表示“模块名称空间”。任何import re都恰好发生在这里-一个模块一个模块;有意地不存在任何更广泛的范围,这确保了可以通过仅读取该模块来理解任何Python模块的内容(与Ruby不同,在Ruby中,要了解运行代码的上下文,您需要读取曾经加载的每个模块由同一个口译员提供。

如果要使用re中的numbs.py模块,则在该文件中应该有一个单独的import re不会从磁盘重新加载模块,而只是添加一个命名空间条目,该条目指向第一次引用时已加载的已缓存实例。