Да, есть разница.
Первый, похоже, работает, но нет.
>>> connection_type = 'ssh'
>>> ("ssh" or "telnet") in connection_type
True
>>> connection_type = 'telnet'
>>> ("ssh" or "telnet") in connection_type
False
Почему это? Оператор or
в Python возвращает первое значение True
среди операндов или последнего, если все они оцениваются до False
- поэтому он работает только для «ssh». Вы можете думать о or
как оператор троичного других языков:
first or second
Это как:
bool(first) ? first : second
Второй прав.
Если connection_type
это целое слово «телнет» или «SSH», вы также можете сделать:
if connection_type in ('ssh', 'telnet'):
...
Если «телнет» или «SSH» являются только подстроки CONNECTION_TYPE, вы можете также использовать обычный выражение:
if re.search(r'ssh|telnet', connection_type):
...
«Я хочу понять, как работает следующее утверждение» - это не так. Попробуйте использовать '' telnet '' в 'connection_type' и' 'ssh' 'не в' connection_type'. – user2357112