Ваше состояние неверно.Это то, что вы хотели бы:
while "pagination" in str(data):
# ...
(По крайней мере, для условия, поскольку вы получили структурированный JSON в качестве ответа, возможно, есть более чистые способы сделать эту проверку, но здесь дело не в этом).
Ваше исходное условие не работает, потому что под капотом Python интерпретирует его как
"pagination" in str(data) and str(data) == True
Это является следствием всех операторов сравнения (включая членствотесты типа in
), имеющие одинаковый приоритет и цепочка операторов сравнения .
цепочка означает, что вы можете написать общее математическое выражение, напримерx < y < z
и это означает, что мы обычно думаем, что оно делает - y
находится между x
и z
.Или, другими словами, x < y AND y < z
.
Однако применительно к вашему исходному выражению эта цепочка приводит к удивительным результатам, которые вы видите.
И это происходит , хотя вы тестировали часть своего состояния отдельно, потому что гоча находится в определенном составе этих подвыражений.Если бы вы написали это, сгруппировав левую часть
("pagination" in str(data)) == True
, это действительно сработало бы - хотя это и не нужно.Достаточно просто сделать if item in sequence
в Python и намного лучше.