如何在Python中替换全局变量
我希望有人能给我一些关于如何改进代码的建议,这样我就不需要使用全局变量了。(我已经稍微简化/缩短了下面的代码,以关注这个问题) 代码的工作原理如下:有两个进程(平移和倾斜),它们都使用函数pid_进程来计算错误数。如果“平移”和“倾斜”错误状态都低于10(均为真),我想做些什么 我已经使用了全局变量,但这似乎不是Python中最好的方法,我想知道是否有人可以帮助我编写更好的代码如何在Python中替换全局变量,python,python-3.x,python-3.7,Python,Python 3.x,Python 3.7,我希望有人能给我一些关于如何改进代码的建议,这样我就不需要使用全局变量了。(我已经稍微简化/缩短了下面的代码,以关注这个问题) 代码的工作原理如下:有两个进程(平移和倾斜),它们都使用函数pid_进程来计算错误数。如果“平移”和“倾斜”错误状态都低于10(均为真),我想做些什么 我已经使用了全局变量,但这似乎不是Python中最好的方法,我想知道是否有人可以帮助我编写更好的代码 tilt_error = False pan_error = False def checkErrorMargin(
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)
tilt_error=False
pan_错误=错误
def checkErrorMargin(操作、错误):
全局倾斜误差
全局平移误差
如果“倾斜”起作用:
如果误差小于10:
倾斜误差=真
其他:
倾斜错误=错误
返回倾斜误差
其他:
如果误差小于10:
pan_error=True
其他:
pan_错误=错误
返回PANU错误
def pid_过程(操作、错误):
全局倾斜误差
全局平移误差
#在原始代码中-错误号将在此处计算
如果“倾斜”起作用:
倾斜误差=检查误差裕度(动作,误差)
其他:
pan_error=检查错误边距(动作、错误)
如果倾斜错误和平移错误:
打印(“做某事”)
对于范围(0,3)内的x:
pid_过程(“pan”,x+8)
pid_过程(“倾斜”,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
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")
def checkErrorMargin(操作,错误):
如果“倾斜”起作用:
如果误差小于10:
倾斜误差=真
其他:
倾斜错误=错误
返回倾斜误差
其他:
如果误差小于10:
pan_error=True
其他:
pan_错误=错误
返回PANU错误
def pid_过程(操作、错误):
如果“倾斜”起作用:
倾斜误差=检查误差裕度(动作,误差)
返回倾斜误差
其他:
pan_error=检查错误边距(动作、错误)
返回PANU错误
对于范围(0,3)内的x:
pan\u错误=pid\u过程(“pan”,x+8)
倾斜误差=pid过程(“倾斜”,x+1)
如果倾斜错误和平移错误:
打印(“火灾”)
将这些值作为函数的参数,返回调用者orry中需要的值,但我不确定你的意思-你能举个例子吗?checkErrorMargin
是否有意返回True
无论它的参数是什么?你已经在使用checkErrorMargin()
功能。对于pid\u process()
,没有什么不同。很抱歉,这是我的错误。只是更新了布尔值以反映true和false状态,而不是仅反映true。抢手货