20课后题有点难呀。。
这个感觉并未体现出闭包非用不可啊,外面那个函数只是做了一个默认参数位置初始化的工作,完全也可以把这个参数写到移动函数里啊?
我想知道的就是闭包这种东西,什么时候非用不可,什么时候用特别棒。
就像你举例递归和迭代一样
闭包这种发放就像内嵌方法 不过不同的是函数里面套的函数(最里面的函数)它的返回值给于最外面函数(有点咬口{:5_91:})下来最后的返回值又给最里面的函数 (乱窜{:5_107:})
实践出真知
{:5_94:}
这种是否就是类似C++中的私有函数?
如梦幻泡影 发表于 2014-1-11 16:46
:lol:JS非常喜欢写闭包
剑圣吗,为什么啊
{:10_250:}太高深了
diuren126 发表于 2015-3-3 18:09
origin = (0, 0)一直沒用上啊,,
这句忽悠人的,确实没用到。。。
例子太复杂了,不好理解。
我也写一下理解,有组总结:
这个函数主要是根据方向和步数两个参数,计算得到最新的方位。第一层def是确定远点坐标,第二层是确定方向和步数,做了闭包之后,第一层的数据就不用你输入了,直接输入第二层就好。闭包就好比模板。
打个比方,有一个服装设计函数,第一层是样式(通过各种参数变化成宽肩、收腰等各种服装样式),第二层的参数是颜色和尺寸,你通过第一层函数参数的修改,得出清凉装,时尚装,男装,女装等不同闭包,然后你只需要调用某个闭包再添加上颜色和尺寸,整个服装设计就完成了。
这样是不是比你一个个服装样式去敲代码更方便?
深度好文,good article
{:10_266:} 看的一头汗{:10_245:}
表示能基本看懂,但是要自己写的话有点难
xiawb 发表于 2014-3-26 13:59
>>>
向右移动10步后,位置是: (10, 0)
向上移动130步后,位置是: (10, 70)
主要的目的是介绍闭包,如果是实际项目中的话肯定会对入参进行相应的限定以及添加相应的报错机制
abecedarian 发表于 2014-8-7 00:36
不太懂,moving()用到外部函数creat()的参数,就是闭包?
闭包就是调用函数A传入自由变量,返回函数B。
wonderwhy20 发表于 2015-4-13 00:29
为什么要用nonlocal啊
使用闭包后pos_x,pos_y两变量变成局部变量,外部传入的pos_x,pos_y与其指向的域不同,使用nonlocal表示使用外层(非全局)变量
hip49669 发表于 2015-8-16 10:39
因为定义move函数的时候,第一个参数就是一个列表,函数里面用到了direction和direction,见11、12 ...
因为create函数默认了参数,所以这里省略了,也可以写成create(0, 0)(, 10)
John_farmer 发表于 2015-8-28 11:42
第017讲课后作业动动手的最后一题,我写的程序,出现一个错误,求小甲鱼帮忙分析下错误原因
>>> def Decim ...
r = number % 2 这一步的时候,r未进行定义
lzj222312 发表于 2015-10-22 09:03
你再了解下闭包的概念就明白了。。。。我也是刚开始不明白闭包是什么意思。。。后来又翻了一遍概念去看了 ...
闭包的作用:1、装饰器 2、惰性求值,一般在数据库访问时用的比较多 3、函数参数的提前赋值