返回信息流关于python的import,我只知道它的作用是导入模块,但是在使用起来发现有些地方理解不太对,比如:
a.py 里面有一个函数a()
def a()
return 1
b.py 里:
import a
def b()
return 1 + a.a()
那么我在c.py里只import b的话,不应该也会同时import a了吗?因为在c.py中运行b得出的结果是2啊,但是实际的结果是无法用a,报错是a未定义。
那么import的具体行为是什么呢?请教各位大神~
这是一条镜像帖。来源:北邮人论坛 / soft-design / #44577同步于 2014/1/26
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖
[Solved]python 的多重Import
cyxsheep
2014/1/26镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
import 只影响当前模块的namespace
看看这个 http://jianpx.iteye.com/blog/486466 写的挺简单的
import b的时候,python虚拟机会装载a.py,但是在c里面并没有引入a这个变量。也就是说,import b做的是:装载b.py,装载a.py,把b.py的模块对应到b这个全局变量上,但是,没有定义“a”这个全局变量。
真的想用a,就手动import a。
估计是你编程环境的问题,python模块导入在你描述的点上不存在问题
这个问题问法没搞清楚,
import语句分两步,第一步找到对应的module或package,第二步在当前模块的locals里面进行变量绑定。
python的模块也是对象,所以也有globals和locals,相当于别的语言的scope