Мне сложно понять следующую строку:
result = (status!=None and "off" or "on")
Теперь, когда это вызывается, только status
было присвоено значение (результат поиска по регулярному выражению). Однако после этой команды result
принимает значение «включено» или «выключено».
На мой неопытный взгляд, это просто сравнение. Как происходит это задание?
1 ответ
Из документации:
Выражение
x and y
сначала оцениваетx
; еслиx
равно false, возвращается его значение; в противном случае,y
вычисляется и возвращается полученное значение.Выражение
x or y
сначала оцениваетx
; еслиx
имеет значение true, возвращается его значение; в противном случае,y
вычисляется и возвращается полученное значение.
Более того, любая непустая строка считается "истинной", когда она появляется в логическом контексте.
Таким образом, мы сможем ответить на ваш вопрос.
В соответствии с правилами приоритета операторов следующее:
status != None and "off" or "on"
Эквивалентно:
(status != None and "off") or "on"
Первая часть, status != None and "off"
оценивается как:
False
, еслиstatus
равноNone
;"off"
в противном случае
Все выражение (status != None and "off") or "on"
оценивается как:
"on"
, еслиstatus
равноNone
;"off"
в противном случае.
Возможно, более питонический способ написать это утверждение:
result = "on" if status is None else "off"
Похожие вопросы
Новые вопросы
python
Python — это мультипарадигмальный многоцелевой язык программирования с динамической типизацией. Он предназначен для быстрого изучения, понимания и использования, а также обеспечивает чистый и унифицированный синтаксис. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Если у вас есть вопросы о версии Python, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas, NumPy) укажите это в тегах.