为什么我的函数导入失败了?上面写着“重新”没有定义。我还尝试使用一个基本函数,如def x(): return 5+5
,但也抛出了一个错误。在
import re
from sys import argv
from Galvanize import q1
f = open('git_script.txt','r')
q1.text_content_analyzer(f)
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-82-cdff728a66aa> in <module>()
1 f = open('git_script.txt','r')
----> 2 q1.text_content_analyzer(f)
/Users/Rafeh/Dropbox/github/Galvanize/q1.py in text_content_analyzer(f)
6 wordsCount = {}
7
----> 8 for line in f:
9 nbOfSentences += len(re.split(r'[.!?]+', line.strip()))-1
10 lineWords = line.split()
NameError: name 're' is not defined
现在我只是在测试和学习如何使用我自己的功能,但我目前有一个问题。在
如果要在函数内部使用模块“re”,则“re”的导入应该位于定义函数的同一个文件中。另一种方法是像在第二个代码片段中那样在函数内部导入“re”。在
我猜问题可能是,首先您创建了脚本,而没有放入
import re
,然后当您在python中运行函数时,出现了这个错误。在随后,您通过导入
re
来更正该文件,然后在同一个ipython会话中再次尝试运行该函数时,它仍然出错。你的话-让我相信这是事实。在
如果以上所述是正确的,那么问题是,一旦您将模块导入Python,Python就会将该模块缓存在
sys.modules
中,因此如果您尝试在同一Python会话中再次导入它,您将得到相同的模块(这意味着您将获得相同的函数)。在要解决这个问题,最简单的方法是关闭ipython会话,然后再次打开它,然后再次导入它。在
不涉及关闭Python终端的解决方案是使用^{} 。如果
q1
是模块,则示例-相关问题 更多 >
编程相关推荐