Как заменить глобальные переменные в Python - PullRequest
0 голосов
/ 28 мая 2020

Я надеялся, что кто-нибудь может дать мне совет, как улучшить мой код, чтобы мне не нужно было использовать глобальные переменные. (Я немного упростил / сократил код ниже, чтобы сосредоточиться на проблеме)

Код работает следующим образом: есть два процесса (панорамирование и наклон), оба из них используют функцию pid_process, которая будет вычислять номер ошибки. если оба состояния ошибки панорамирования и наклона ниже 10 (оба верны), я хочу что-то сделать. интересно, может ли кто-нибудь помочь мне написать лучший код.

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)

1 Ответ

0 голосов
/ 28 мая 2020

спасибо за помощь. сейчас работает

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...