流月飞星
发表于 2017-9-28 15:13:00
这就是闭包名字的由来??
森兔子
发表于 2017-10-8 10:59:38
暴击6666的闭包操作!学习学习程序思想!
紫夜之恋
发表于 2017-10-15 19:38:09
这个移动系统应该是走到边界之后继续会往回走。
我想问的是只用一个函数定义能达到效果吗?如果能的话,用闭包这种方式和那种方式有什么优势呢?
chaos_
发表于 2017-10-15 22:51:20
很好理解呀,就是查看对象移动后是否超出范围,比如说,如果X为,若移动后为130,则给X赋值为70,若跑动为负数-20,则X为+20,其实坐标就好比以边界做镜像,Y同理;
除此,移动后的位置由direction、确定,X、Y坐标为方向*步数:
只是有点模糊的是,定义的direction,如何分解出的XY:direction、direction。
欣宝宝
发表于 2017-10-23 16:30:04
我想问下最后的 ; move = create();是什么意思,哪位大神回答一下,谢谢!
Amadeus1995
发表于 2017-11-25 20:09:46
感谢小甲鱼!
shawn竹肃
发表于 2017-11-28 06:09:35
这里的moving和move是不是笔误???难道Python还能自动识别时态666
小谢啊
发表于 2017-12-13 16:02:46
这样会好理解点吧
猜不中
发表于 2017-12-14 21:06:22
多看多学多练,还是能看懂点的
残~影
发表于 2017-12-18 17:36:46
看懂了,但是也就是仅仅看懂了。。。。。。。。。。。
willli[0]
发表于 2017-12-22 11:13:52
在这里我终于发现我不是最菜的{:10_256:}{:10_256:}{:10_256:}
Neeborngogo
发表于 2017-12-24 17:50:37
先评论再来看
王路ylu
发表于 2018-1-1 16:04:25
我只是想问,这截图是啥游戏呢
rover1
发表于 2018-1-5 14:28:05
pos_x与pos_y这两个参数是在creat函数中定义的形参,但是又在moving函数中申明这两个参数不是局部变量,因此程序在运行的过程中,第一次先将这两个参数值引用到moving函数中,然后在程序的运行过程中,这两个参数跟随函数的运行结果发生变化的,即不再受creat函数中初始定义值的影响,是否这就是闭包的正解呢?
stephenw123
发表于 2018-1-6 10:31:23
真的有趣
wside888
发表于 2018-1-9 11:54:57
def add9(x=9):
def su(m,n):
nonlocal x
x=x+10
return m+n+x
return su
a=add9()
print(type(a))
print(a(1,2))
print(a(1,2))
print(a(1,2))
a=add9()
print(a(1,2))
print(a(1,2))
print(a(1,2))
所谓用闭包保护位置数据,是不是可以理解为,位置并没有以变量的形式体现出来,只是作为一个过程参数存在,所以没法直接被更改?
wenjiew
发表于 2018-1-12 21:51:27
请问一下 pos_x=legal_x - (new_x - legal_x) 这个是什么意思呢,如果X的坐标超过了它的范围,会怎么样?
zero月蚀的假面
发表于 2018-1-16 15:52:00
wenjiew 发表于 2018-1-12 21:51
请问一下 pos_x=legal_x - (new_x - legal_x) 这个是什么意思呢,如果X的坐标超过了它的范围,会怎么 ...
这个是求超过左边范围-100时的情况,超过范围会撞墙往回走,-110走到-100后会返回走-10,所以得-90
zero月蚀的假面
发表于 2018-1-16 16:21:55
move = creat()
print(move())
print(move())
print(move())
这里闭包的作用是避免移动位置重新归零,
即第一次移动(10,0)第二次在第一次基础上移动(10,70),第三次移动后为(0,70)
因为creat()函数中的(pos_x,pos_y)并没有被释放仍然存在,除非move被重新赋值
chijiahao
发表于 2018-1-18 18:11:12
学习学习