我希望有人可以给我一些有关如何改进代码的建议,这样我就不必使用全局变量。 (我已经稍微简化/缩短了下面的代码以关注该问题)
代码的工作方式如下:有两个过程(水平和平移),它们都使用函数pid_process来计算错误号。如果平移和倾斜错误状态均低于10(均为真),则我想做点什么。
我已经使用全局变量了,但是这似乎不是Python中的最佳方法,并且想知道是否有人可以帮助我编写更好的代码。
tilt_error = False
pan_error = False
def checkErrorMargin(action, error):
global tilt_error
global pan_error
if 'tilt' in action:
if error < 10:
tilt_error = True
else:
tilt_error = False
return tilt_error
else:
if error < 10:
pan_error = True
else:
pan_error = False
return pan_error
def pid_process(action, error):
global tilt_error
global pan_error
# in original code - error number will be calculated here
if 'tilt' in action:
tilt_error = checkErrorMargin(action, error)
else:
pan_error = checkErrorMargin(action, error)
if tilt_error and pan_error:
print("do something")
for x in range(0,3):
pid_process("pan", x+8)
pid_process("tilt", x+1)
感谢您的帮助。现在正在工作
def checkErrorMargin(action, error):
if 'tilt' in action:
if error < 10:
tilt_error = True
else:
tilt_error = False
return tilt_error
else:
if error < 10:
pan_error = True
else:
pan_error = False
return pan_error
def pid_process(action, error):
if 'tilt' in action:
tilt_error = checkErrorMargin(action, error)
return tilt_error
else:
pan_error = checkErrorMargin(action, error)
return pan_error
if tilt_error and pan_error:
print("hello")
for x in range(0,3):
pan_error = pid_process("pan", x+8)
tilt_error = pid_process("tilt", x+1)
if tilt_error and pan_error:
print("fire")