如何在Python中替换全局变量

问题描述 投票:-1回答:1

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

代码的工作方式如下:有两个过程(水平和平移),它们都使用函数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)
python python-3.x python-3.7
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.