Является ли «имя теней из внешних областей ошибкой»? - PullRequest
0 голосов
/ 11 мая 2018

Здравствуйте. Я пишу код на Python и получаю две переменные, подчеркнутые зеленым цветом: «Имя теней 'value' из внешней области видимости" и "Имя теней 'value1' из внешней области видимости". Это ошибка? И как я могу решить эту проблему? Мой код должен читать данные двух переменных из базы данных Firebase в реальном времени. Если обе переменные имеют значение 1, я должен получить уведомление на моем телефоне. Код неправильный? Обратите внимание, что он работал нормально, и я смог получать уведомления, но когда я добавил вторую переменную и изменил код, я больше не могу получать уведомления.

value = 0
value1 = 0


def stream_handler(message):
    print(message)
    if message['data'] is 1:
        value = 1 //here the variable is underlined in green
        value = value //here the variable is underlined in green
        return value


def stream_handler1(message1):
    print(message1)
    if message1['data'] is 1:
        value1 = 1 //here the variable is underlined in green
        value1 = value1 //here the variable is underlined in green
        return value1


if value is 1 & value1 is 1:

            response = pn_client.publish(
             interests=['hello'],
             publish_body={
                 'apns': {
                     'aps': {
                         'alert': 'Hello!',
                     },
                 },
                 'fcm': {
                    'notification': {
                      'title': 'Notification',
                      'body': 'Fall Detected !!',
                     },
                  },
             },
            )

            print(response['publishId'])


my_stream = db.child("Fall_Detection_Status").stream(stream_handler)
my_stream1 = db.child("Fall_Detection_Status1").stream(stream_handler1)

1 Ответ

0 голосов
/ 11 мая 2018

Вы, вероятно, имели в виду это:

def stream_handler(message):
    global value
    print(message)
    # rest of function elided


def stream_handler1(message1):
    global value1
    print(message1)
    # rest of function elided

Операторы global сообщают Python, что вы хотите использовать глобальные версии переменных-значений и не иметь локальных версий.

Кроме того, вам, вероятно, не нужны такие выражения, как:

value = value

так как это ничего не значит.

...