首页 > 解决方案 > 如何在 Python 中替换全局变量

问题描述

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

代码工作如下:有两个进程(平移和倾斜),它们都使用函数 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)

标签: pythonpython-3.xpython-3.7

解决方案


谢谢您的帮助。它现在正在工作

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")


推荐阅读