Python导入模块后调用函数提示NameError问题求助
解决Python模块导入后函数未定义的问题
这问题我碰到过好多次,其实是Python模块导入的命名空间规则在起作用~
咱们先理清楚报错原因:当你用import mym导入模块时,模块里的hello()和summ()函数都属于mym这个独立的命名空间里,你直接写hello()或者summ(),Python会在当前脚本的全局命名空间里找这些名字,自然找不到,所以抛出NameError。
给你两种简单可行的解决办法:
方法1:通过模块名前缀访问函数
修改abc.py的代码,在调用函数时加上模块名前缀mym.,明确告诉Python要从mym模块里找对应的函数:
import mym mym.hello() x = mym.summ(3,4) print(x)
方法2:直接导入指定函数到当前命名空间
如果你不想每次都写模块名,可以用from ... import ...语法,把需要的函数直接导入到当前脚本的命名空间里:
from mym import hello, summ hello() x = summ(3,4) print(x)
要是你想一次性导入模块里所有内容(小脚本里用没问题,大型项目不推荐,容易引发命名冲突),也可以这么写:
from mym import * hello() x = summ(3,4) print(x)
修改后运行代码,应该就能正常输出Hello everyone和7啦~
内容的提问来源于stack exchange,提问作者Nisha B
相关产品推荐
相关产品推荐

