免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6420 | 回复: 12

Python 不能递归 import 吗? [复制链接]

论坛徽章:
0
发表于 2009-01-16 11:26 |显示全部楼层
a moudle             b moudle
--------             -------
import b             import a
...                  ....
-------             ------

main moudle
-------
import a
...
-------

在 b 中引用 a 中的属性会引发错误
难道模块不能递归 import?

论坛徽章:
0
发表于 2009-01-16 11:47 |显示全部楼层
貌似不能,试了几下没成功。

论坛徽章:
0
发表于 2009-01-16 14:44 |显示全部楼层
怎么不行了? 假设a有属性a 我这样 a.b.a.a 可以

[ 本帖最后由 luffy.deng 于 2009-1-16 14:46 编辑 ]

论坛徽章:
0
发表于 2009-01-16 14:48 |显示全部楼层
有意义不?

论坛徽章:
0
发表于 2009-01-16 14:48 |显示全部楼层
原帖由 luffy.deng 于 2009-1-16 14:44 发表
怎么不行了? 假设a有属性a 我这样 a.b.a.a 可以


能否贴出的示例代码?

论坛徽章:
0
发表于 2009-01-16 15:10 |显示全部楼层
a 是这样的
import b
a=0
b是这样的
import a
b=1
main这样
import a
print a.b.a.a
这样符合要求么?

论坛徽章:
0
发表于 2009-01-16 15:46 |显示全部楼层
原帖由 爱知 于 2009-1-16 11:26 发表
a moudle             b moudle
--------             -------
import b             import a
...                  ....
-------             ------

main moudle
-------
import a
...
-------
...


递归,也需要在某个点结束递归的,否则就是stack overflow了。
即使解释器允许递归import,什么时候结束递归呢?

论坛徽章:
0
发表于 2009-01-16 17:16 |显示全部楼层
原帖由 luffy.deng 于 2009-1-16 15:10 发表
a 是这样的
import b
a=0
b是这样的
import a
b=1
main这样
import a
print a.b.a.a
这样符合要求么?


我猜楼主的意思不是这个,是在b模块里:
import a
print a.a

这个是报错的

论坛徽章:
0
发表于 2009-01-16 17:59 |显示全部楼层
不成的。以前也有过这个困惑,这样就无限递归了。
应该把a,b都需要导入的代码抽出来放在一个单独模块里,这里a,b分别import这个模块就没问题了。

论坛徽章:
1
天秤座
日期:2014-04-27 07:42:20
发表于 2009-01-16 22:49 |显示全部楼层
递归必须要有退出边界的,否则就是无限递归,变死循环了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP