猪猪夏目转黄鹂
发表于 2020-2-16 14:30:16
oMakero 发表于 2015-2-2 16:40
一边画图一遍理解,自己动手再写一遍,现在感觉好简单。。通过这个实例,我发现闭包的一个好处就是,每次调 ...
求助:
我发现闭包的一个好处就是,每次调用内部函数,都会从上一次的运行结果的基础上进行叠加。。
-----为啥闭包会在上一次的运行结果的基础上进行叠加?这个逻辑没搞懂{:10_269:}
镜花水月·
发表于 2020-2-17 11:33:45
看是能看懂,就不知道到时候自己写的时候能不能写出来。。。得多练
1815702237
发表于 2020-2-23 19:40:29
我看完怎么感觉我之前的课都白上了。。。
fengyunkuang
发表于 2020-2-25 10:37:59
不太懂为什么creat()要设置默认值
lcacxj1314
发表于 2020-2-26 01:20:11
move怎么重新被赋值
bananatree
发表于 2020-2-28 17:11:10
嘿嘿我明白了,最后那个改成
move = create
print('向右移动10步后,位置是:', move()(, 10))
也是一样的
zpqm1937
发表于 2020-2-28 18:17:50
1 、第27、28行 return 将值返回去哪了
2、能不能直接把值返回给create
3 、return moving 和 return moving()有什么区别
恳请大佬帮忙{:10_254:}
714536074
发表于 2020-2-28 22:18:20
能看明白,但是对于闭包问题,还是没太明白。
Fate命运枷锁
发表于 2020-2-29 16:16:46
1
xiangyuebj
发表于 2020-2-29 22:18:17
legal_x = [-100, 100]# x轴的移动范围
legal_y = [-100, 100]# y轴的移动范围
向上移动130步后的位置,move(, 130))
new_x = pos_x + direction * step
new_y = pos_y + direction * step
new_x = 0 + 0*130
new_y = 0 + 1*130
new_x = 0
new_y = 130
if new_x < legal_x:
pos_x = legal_x - (new_x - legal_x)
elif new_x > legal_x:
pos_x = legal_x - (new_x - legal_x)
else:
pos_x = new_x
new_x > legal_x:
0 > -100
pos_x = legal_x - (new_x - legal_x)
pos_x = (100) - (0-100)
pos = 200
if new_y < legal_y:
pos_y = legal_y - (new_y - legal_y)
elif new_y > legal_y:
pos_y = legal_y - (new_y - legal_y)
else:
pos_y = new_y
new_y > legal_y
130 > 100
pos_y = legal_y - (new_y - legal_y)
pos_y = 100 -(130-100)
pos_y = 70
以上我根据自己的逻辑运算出来的,可能是我哪里没有理解透侧,得出来的结果和python运算出来的结果不一样
实际运算出来的结果是 向上移动130步后,位置是: (10, 70)
请论坛大神指点迷津
233倔强不秃
发表于 2020-3-2 09:01:58
第三遍,懂了!
dudaguo
发表于 2020-3-3 09:49:26
努力求索中
nbhzszb
发表于 2020-3-8 22:01:12
本帖最后由 nbhzszb 于 2020-3-8 22:06 编辑
路过,学习中
fitnesssky
发表于 2020-3-9 13:25:51
頭暈了!!
只能硬的頭皮看@@
不应该衣服
发表于 2020-3-10 12:17:42
明白了nonlocal的用法,和global是真的很相似;检查是否超出边界那里可能可以搞个循环,然后符合条件就break,万一有傻子移动了10000步,哈哈哈哈。看到评论区已经有仁兄做了。
eeeqweasdfff
发表于 2020-3-10 14:36:24
本来听的云里雾里不懂闭包有什么用,现在看了这个代码知道闭包可以拿来保护数据,有那么一点理解了,这样做了外部函数的坐标信息在整个程序里就无法被修改,在生成一个值后就只能进行移动而无法更改坐标。
言言的爸爸
发表于 2020-3-10 20:10:29
反而这个我看懂了!!!!前面20节练习题 反而还看的懵懂 懵懂!!!
yan5782037
发表于 2020-3-11 21:48:18
越界了就往回走 move【1,0】 相当于坐标系x=1,y=0 向右移 step 就是移动多少步
wangwei_454
发表于 2020-3-13 15:18:23
yu_wind 发表于 2014-1-11 16:22
请问
if new_x < legal_x:
pos_x = legal_x - (new_x - legal_x)
因为移动超出边界的时候,不会一直固定在边界,而是会在边界反弹。比如说边界时-100,你移动到-105,但实际上反弹了,位置应该时-95。所以是一个动态指。
沫颜之瞳
发表于 2020-3-17 15:23:46
看不懂啊,最后在外部函数调用内部函数就算闭包的意思吗?