这就是闭包名字的由来??
暴击6666的闭包操作!学习学习程序思想!
这个移动系统应该是走到边界之后继续会往回走。
我想问的是只用一个函数定义能达到效果吗?如果能的话,用闭包这种方式和那种方式有什么优势呢?
很好理解呀,就是查看对象移动后是否超出范围,比如说,如果X为,若移动后为130,则给X赋值为70,若跑动为负数-20,则X为+20,其实坐标就好比以边界做镜像,Y同理;
除此,移动后的位置由direction、确定,X、Y坐标为方向*步数:
只是有点模糊的是,定义的direction,如何分解出的XY:direction、direction。
我想问下最后的 ; move = create();是什么意思,哪位大神回答一下,谢谢!
感谢小甲鱼!
这里的moving和move是不是笔误???难道Python还能自动识别时态666
这样会好理解点吧
多看多学多练,还是能看懂点的
看懂了,但是也就是仅仅看懂了。。。。。。。。。。。
在这里我终于发现我不是最菜的{:10_256:}{:10_256:}{:10_256:}
先评论再来看
我只是想问,这截图是啥游戏呢
pos_x与pos_y这两个参数是在creat函数中定义的形参,但是又在moving函数中申明这两个参数不是局部变量,因此程序在运行的过程中,第一次先将这两个参数值引用到moving函数中,然后在程序的运行过程中,这两个参数跟随函数的运行结果发生变化的,即不再受creat函数中初始定义值的影响,是否这就是闭包的正解呢?
真的有趣
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))
所谓用闭包保护位置数据,是不是可以理解为,位置并没有以变量的形式体现出来,只是作为一个过程参数存在,所以没法直接被更改?
请问一下 pos_x=legal_x - (new_x - legal_x) 这个是什么意思呢,如果X的坐标超过了它的范围,会怎么样?
wenjiew 发表于 2018-1-12 21:51
请问一下 pos_x=legal_x - (new_x - legal_x) 这个是什么意思呢,如果X的坐标超过了它的范围,会怎么 ...
这个是求超过左边范围-100时的情况,超过范围会撞墙往回走,-110走到-100后会返回走-10,所以得-90
move = creat()
print(move())
print(move())
print(move())
这里闭包的作用是避免移动位置重新归零,
即第一次移动(10,0)第二次在第一次基础上移动(10,70),第三次移动后为(0,70)
因为creat()函数中的(pos_x,pos_y)并没有被释放仍然存在,除非move被重新赋值
学习学习