呃。。。。。
还是不太懂闭包到底有什么用
请问为什么不用一个函数去定义这4个变量:
pos_x,pos_y,direction,step
有点难懂,慢慢看
{:10_266:}看不懂
这个如果移到数据太大一样也会超过限定坐标吧
滴
origin =
legal_x = [-100, 100]
legal_y = [-100, 100]
def create(position_x=0, position_y=0):
def moving(direction, step):
nonlocal position_x,position_y
new_x = position_x + direction * step
new_y = position_y + direction * step
if new_x < legal_x:
position_x = legal_x#超出边界无法前进
elif new_x > legal_x:
position_x = legal_x#超出边界无法前进
else:
position_x = new_x
if new_y < legal_y:
position_y = legal_y#超出边界无法前进
elif new_y > legal_y:
position_y = legal_y#超出边界无法前进
else:
position_y = new_y
return position_x, position_y
return moving
move = create()
print('向上移动10步', move(,10))
print('向右移动130步', move(,10))
print('向左下移动100步', move([-1,-1],100))
print('向左上动10步', move([-1,1],10))
print('向左移动10步', move([-1,0],10))
studying
没看懂
好东东,谢谢!
其实不用看懂上面的代码,只要move = create()这个函数在,没有释放,每一次执行move都会数据连续性,不会被破坏,不知道这样理解对不对。
我觉的应该没错
我的理解。。
刚开始用move = create() 调用create() 这个函数 里面没输入任何数值所以是初始值(0,0) 之后move 就变成了create()里返回的一个函数 moving
之后print 里调用move 就是在使用moving() 在这里就需要输入两个参数direction 和 step 运行后会返回 pos_x 和 pox_y
之后再次运行的print 就是再用moving ()函数,这个时候 没有运行creat( ) 所以pos_x 和 pos_y没有初始化 后面继续移动会在移动后的基础上继续移动
要回到原点就 再次运行move = create() 才行
一看就想关..........感觉这个对我作用不大.
看是看懂了,就是不会写{:10_249:}
支持小甲鱼
啊是大苏打撒旦撒打算打算打算打算重新注册咨询
向楼主学习!
有点难以理解
没怎么看懂这个逻辑,特别是检查是否超范围那