Python: невозможно получить возвращаемые значения из функций - PullRequest
0 голосов
/ 11 мая 2018

это мой код Python.Нет ошибки, но переменные value и value1 не возвращаются после двух определенных функций stream_handler и stream_handler1.Я вручную установил переменные Fall_Detection_Status и Fall_Detection_Status1 из firebase в 1 (см. Последние две строки в коде), но ответ в конце кода не печатает print(response['publishId']), поэтому я думаю, что последнийif оператор никогда не получает value=1 и value1=1.Где должна быть проблема?

value = 0
value1 = 0


def stream_handler(message):
    global value
    value = 0
    print(message)
    if message['data'] is 1:
        value = 1
        return value


def stream_handler1(message1):
    global value1
    value1 = 0
    print(message1)
    if message1['data'] is 1:
        value1 = 1
        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

is оператор не является оператором сравнения значений, вам нужно использовать == здесь.

is сравнивает тождества, тогда как == сравнивает значения

Аналогично, & также не совпадает с and.

& используется для операций «И», тогда как and используется для объединения нескольких условий

Наконец, ваши операторы return находятся внутри цикла if, они должны быть снаружи:

if message['data'] is 1:
    value = 1
return value

то же самое для message1 и value1

...