作用域嵌套和LGB规则<求救>

Python/PHP/Perl 开发与设计
回复
oxbat
帖子: 9
注册时间: 2007-03-15 21:23
送出感谢: 0
接收感谢: 0

作用域嵌套和LGB规则<求救>

#1

帖子 oxbat » 2007-06-05 6:09

代码: 全选

def outer(x):
      def inner(i):
            print i,
            if i:inner(i-1)
      inner(x)
outer(3)

按照书上写的这样的函数是不能运行的,解释是嵌套函数不是嵌套作用域..
嵌套的函数对自己的局部作用域,包含自己的模块的全局作用域以及内置的名字作用域有访问权,对包含自己的函数的作用域无访问权.
但是为什么在我这里 这段代码完全可以执行而没有任何错误
是书太古老了吗?还是新版本的python增加了这样的内容?
oxbat
帖子: 9
注册时间: 2007-03-15 21:23
送出感谢: 0
接收感谢: 0

#2

帖子 oxbat » 2007-06-05 6:12

语法上没有问题 缩进被论坛消除了
oxbat
帖子: 9
注册时间: 2007-03-15 21:23
送出感谢: 0
接收感谢: 0

#3

帖子 oxbat » 2007-06-05 6:53

困的不行了 没办法在线等了
希望看到此帖的仁兄给个解答 睡起来再继续
头像
laborer
帖子: 1016
注册时间: 2005-10-25 11:15
送出感谢: 0
接收感谢: 1 次
联系:

#4

帖子 laborer » 2007-06-06 5:16

鉴定结果:你看的是古籍。
hreiser@oakland:~$ killall -9 wife
police@oakland:~$ sudo find / -user hreiser
court@oakland:~$ sudo mv /home/hreiser /jail/
court@oakland:~$ sudo usermod -d /jail/hreiser -s "/usr/sbin/chroot /jail/" hreiser
头像
roylez
论坛版主
帖子: 1928
注册时间: 2005-10-04 10:59
来自: 上海
送出感谢: 0
接收感谢: 1 次

#5

帖子 roylez » 2007-06-06 9:28

没问题阿,可以执行。
弄个dropbox空间来备份文件或者做私人代码服务器
配置:[url]git://github.com/roylez/dotfiles.git[/url]
主页:http://roylez.heroku.com
各种稀奇玩意儿:http://dooloo.info
oxbat
帖子: 9
注册时间: 2007-03-15 21:23
送出感谢: 0
接收感谢: 0

#6

帖子 oxbat » 2007-06-08 3:35

这本古籍还是不错的 呵呵
古籍所描述的想实现这样的根本不可能...
至少加深了我对这个问题的理解
richardfreeman
帖子: 3
注册时间: 2007-07-06 7:26
送出感谢: 0
接收感谢: 0

个人见解

#7

帖子 richardfreeman » 2007-07-06 7:32

可能是inner绑定到了模块上,这样它既是局部的,又是全局的
richardfreeman
帖子: 3
注册时间: 2007-07-06 7:26
送出感谢: 0
接收感谢: 0

Re: 个人见解

#8

帖子 richardfreeman » 2007-07-06 7:54

richardfreeman 写了:可能是inner绑定到了模块上,这样它既是局部的,又是全局的


我也是用的老书了 在2.1版中的嵌套作用域中 ,这种没定义在它所属的定义域的变量给了个名字叫自由变量,引用这种变量,使用与当前引用变量的代码块最近的且包含它的作用域。所以编译不报错。
richardfreeman
帖子: 3
注册时间: 2007-07-06 7:26
送出感谢: 0
接收感谢: 0

3

#9

帖子 richardfreeman » 2007-07-06 7:59

记得加上这句,才能用这个新特性:
from __future__ import nested_scopes
回复

回到 “Python/Php/Perl”