Загадка приоритета операторов в Python: разгадка тайны 'in' и сравнений
Загадочное поведение, наблюдаемое с оператором 'in' в Python и Сравнения оставили многих в недоумении. Но под поверхностью скрывается тонкое взаимодействие приоритета операторов и цепочек выражений.
Приоритет операторов определяет порядок, в котором операции оцениваются внутри выражения. В Python операторы «in» и сравнения (например, «==») имеют одинаковый приоритет. Следовательно, они обрабатываются слева направо.
Однако ситуация усложняется, когда используются цепочки выражений. Распространенная ошибка возникает при попытке сравнить результат операции «in» с другим значением. Рассмотрим следующий пример:
'1' in '11' == True
Как ни странно, это выражение имеет значение False. Причина кроется в объединении «in» и «==». Выражение эффективно анализируется как:
('1' in '11') and ('11' == True)
Оператор 'in' проверяет, является ли '1' является членом «11», что приводит к True. Однако второе сравнение, '11' == True, дает значение False. Таким образом, общее выражение оценивается как False.
Чтобы получить желаемое значение True, необходимо явно изменить порядок приоритета. Этого можно добиться с помощью круглых скобок:
('1' in '11') == True
Заключив операцию 'in' в круглые скобки, выражение вычисляется внутри его область видимости, прежде чем сравнивать ее с True. Это изменение приводит к результату True, как и предполагалось.
Понимание приоритета операторов и цепочек имеет решающее значение для расшифровки поведения сложных выражений Python. Это позволяет разработчикам предугадывать последовательность операций и избегать неожиданных ошибок.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3