如何在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(

我希望有人能给我一些关于如何改进代码的建议,这样我就不需要使用全局变量了。(我已经稍微简化/缩短了下面的代码,以关注这个问题)

代码的工作原理如下:有两个进程(平移和倾斜),它们都使用函数pid_进程来计算错误数。如果“平移”和“倾斜”错误状态都低于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)
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。抢手货