免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1831 | 回复: 3
打印 上一主题 下一主题

python有问题提问,举手,请高人解惑! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-11-17 18:25 |只看该作者 |倒序浏览
>>>def outer(x):
           def inner(i):
                print i,
                if i: inner(i-1)
            inner(x)

>>>outer(3)
3 2 1 0

《python语言入门》中说如下代码运行会报错,根据LGB原则,是不可能正常运行,可是我在python 2.5的环境中运行,得出了结果,而且结果也是对的,很是不明白。
另外我做了如下测试,结果也让我不能明白了:
>>> def outer(x):
            i=9
            print ('i='),i
            def inner(i):
                 print "i:",i
                 if i:inner(i-1)
            inner(x)

>>> outer(3)
i= 9
i: 3
i: 2
i: 1
i: 0
请高人解惑,谢谢了!

[ 本帖最后由 透明躯壳 于 2009-11-17 18:27 编辑 ]

论坛徽章:
1
天蝎座
日期:2013-10-23 21:11:03
2 [报告]
发表于 2009-11-17 18:50 |只看该作者
outer(x)是一个工厂函数,该工厂返回的是函数对象inner(x)
outer(3)的结果就是inner(3),剩下的就是inner(3)的递归调用了

PS:Learning Python, 3rd中是LEGB原则

论坛徽章:
0
3 [报告]
发表于 2009-11-18 18:41 |只看该作者

回复 #2 openspace 的帖子

十分感谢你的解惑,感谢之至!

论坛徽章:
0
4 [报告]
发表于 2009-11-18 22:44 |只看该作者
跟i没关系。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP