Ja, es gibt einen Unterschied.
Die erste scheint zu funktionieren, tut es aber nicht.
>>> connection_type = 'ssh'
>>> ("ssh" or "telnet") in connection_type
True
>>> connection_type = 'telnet'
>>> ("ssh" or "telnet") in connection_type
False
Warum ist das? Der or
-Operator in Python gibt den ersten True
-Wert unter den Operanden oder den letzten zurück, wenn alle Werte False
ergeben - deshalb funktioniert es nur für "ssh". Sie können von or
wie der ternäre Operator anderer Sprachen denken:
first or second
Ist wie:
bool(first) ? first : second
Das zweite Recht ist.
Wenn connection_type
das ganze Wort „telnet“ oder „ssh“ ist, können Sie auch tun:
if connection_type in ('ssh', 'telnet'):
...
Wenn „telnet“ oder „ssh“ nur Teil von connection_type sind, können Sie auch eine regelmäßige verwenden Ausdruck:
if re.search(r'ssh|telnet', connection_type):
...
"Ich möchte verstehen, wie die folgende Aussage funktioniert" - es tut es nicht. Versuchen Sie es mit '" telnet "' in 'connection_type' und' "ssh" 'nicht in' connection_type'. – user2357112