Нужна помощь, чтобы понять, почему для l oop петли только один раз - PullRequest
0 голосов
/ 27 апреля 2020

Код, который я использую ниже, является функцией, которая позволяет мне получать данные из API:

def get_evt(adresse, id_machine, bucket_size, token, data):

    TO_DATE = datetime.strptime("25/11/2019, 22:00:00", "%d/%m/%Y, %H:%M:%S").timetuple()


    param = {
    "from": int((mktime(TO_DATE) - (60 * 60 * HOUR_DIFF)) * 1000),
    "to": int(mktime(TO_DATE) * 1000),
    "bucketSize": bucket_size,
    "queries": [
        {
            "signal": data,
            "aggregationFunction": "raw",
            "groupBy": {
                "type": "machine",
                "id": id_machine
            }
        }
    ]
}
    liste = []

    resp = requests.post(adresse, headers=token, json=param)
    if resp.status_code != 200:
        # This means something went wrong.
        print('ERROR ', resp.status_code, ': ', resp.json()["message"])
        print(resp.json()["message"])
    else:
        signalsData = resp.json()
        for param in range(len(signalsData)):
            values = signalsData[param]['timeseries']
            print(values)
            for value in values:
                timestamp = int(value['time']/bucket_size)
                valeur = value['value']
                return timestamp, valeur

Однако в этом коде это для l oop выполняется только один раз:

for value in values:
                timestamp = int(value['time']/bucket_size)
                valeur = value['value']
                return timestamp, valeur

Чего я хотел бы добиться, так это как-то получить первое и последнее значение списка «значений», но я не понимаю, почему l oop работает только один раз, даже если значения содержат несколько значений.

Ответы [ 2 ]

1 голос
/ 27 апреля 2020

Попробуйте вернуть значение for для l oop, поэтому после того, как вы прошли через все значения: ie

for value in values:
                timestamp = int(value['time']/bucket_size)
                valeur = value['value']
return timestamp, valeur
0 голосов
/ 27 апреля 2020

Функция не будет продолжена после return‍, большинство ставят return в конце get_evt..

...