Системная ошибка: неверный аргумент внутренней функции

Я новичок в программировании на Python. Я получаю ошибку ниже, и я не нашел решения для этого в Google. Надеюсь, что любой эксперт по питону поможет мне решить проблему.

**in _convert_to_payload
#     for i in range(length_bytes):
# SystemError: Objects/listobject.c:169: bad argument to internal function**

Я получаю сообщение об ошибке выше, когда звоню ниже def _convert_to_payload. Пожалуйста, дайте мне знать, что мне здесь не хватает.

def _convert_to_payload(self, value, length_bytes):
    payload = []
    for i in range(length_bytes):
        payload.append((value >> (8 * i)) & 0xFF)
    return payload


def send_status_query(self, response_address=0):
    payload = self._convert_to_payload(response_address, 4)
    self._send_host_command_message(CommandMessageID.StatusQuery, payload)  # pylint: disable=E1101

Это довольно интересное сообщение об ошибке. Есть минимальный воспроизводимый пример?

Kevin 10.08.2018 17:17

Какой тип и ценность length_bytes?

Andras Deak 10.08.2018 17:21

@AndrasDeak length_bytes имеет тип int и значение 4.

Kiran 10.08.2018 17:39

@Kevin у меня еще нет этого примера, я попытаюсь воссоздать его, потому что иногда этот код работает нормально. обновится здесь, как только у меня будет пример кода. Благодарность

Kiran 10.08.2018 17:41
0
4
2 706
1

Ответы 1

Я склонен думать, что length_bytes не во всех случаях может быть целочисленным. Пожалуйста, рассмотрите возможность звонка range() как:

for i in range(int(length_bytes))

Таким образом, по крайней мере, вы уверены, что range() получит ожидаемый аргумент; если проблема не исчезнет, ​​вы можете сузить ее.

Другие вопросы по теме