def static_vars(**kwargs):
'''
装饰器,用于添加静态局部变量,相当于设置了函数本身的属性,其实使用类也可完成此功能
'''
def decorate(func):
for k in kwargs:
setattr(func, k, kwargs[k])
return func
return decorate
@static_vars(Pitch=0, Roll=0, flag=0, speed=2.5, MaxPitch=50, MaxRoll=50)
def swing_body():
'''
使用装饰器编程,实现类似于C语言的静态局部变量的效果
'''
if swing_body.flag == 0:
swing_body.Pitch += swing_body.speed
if swing_body.Pitch >= swing_body.MaxPitch:
swing_body.flag = 1
if swing_body.flag == 1:
swing_body.Roll += swing_body.speed
if swing_body.Roll >= swing_body.MaxRoll:
swing_body.flag = 2
if swing_body.flag == 2:
swing_body.Pitch -= swing_body.speed
if swing_body.Pitch <= -swing_body.MaxPitch:
swing_body.flag = 3
if swing_body.flag == 3:
swing_body.Roll -= swing_body.speed
if swing_body.Roll <= -swing_body.MaxRoll:
swing_body.flag = 0
motor_all_set(
position_solver(
0.4,
swing_body.Roll,
swing_body.Pitch,
0)) # 高度 Roll, Pitch, Yaw
python静态局部变量,使用装饰器实现
最新推荐文章于 2024-05-03 03:26:53 发布