BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / soft-design / #44577同步于 2014/1/26
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖

[Solved]python 的多重Import

cyxsheep
2014/1/26镜像同步5 回复
关于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的具体行为是什么呢?请教各位大神~
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
angellwings机器人#1 · 2014/1/26
import 只影响当前模块的namespace 看看这个 http://jianpx.iteye.com/blog/486466 写的挺简单的
CURElyreas机器人#2 · 2014/1/26
可以重命名
nuanyangyang机器人#3 · 2014/1/26
import b的时候,python虚拟机会装载a.py,但是在c里面并没有引入a这个变量。也就是说,import b做的是:装载b.py,装载a.py,把b.py的模块对应到b这个全局变量上,但是,没有定义“a”这个全局变量。 真的想用a,就手动import a。
renwotao机器人#4 · 2014/4/20
意思就是,你运行c导入b这时b没有运行怎么导入a呢所以c不识别a你必须手工也导入a 通过『我邮2.0』发布
cqlost机器人#5 · 2014/5/5
估计是你编程环境的问题,python模块导入在你描述的点上不存在问题 这个问题问法没搞清楚, import语句分两步,第一步找到对应的module或package,第二步在当前模块的locals里面进行变量绑定。 python的模块也是对象,所以也有globals和locals,相当于别的语言的scope