Eingehende Analyse von Pythons und/oder Rückgabewerten

大家讲道理
Freigeben: 2016-11-07 11:11:54
Original
1219 Leute haben es durchsucht

In Python führen und/oder boolesche Logik aus, wie Sie es erwarten würden, aber sie geben keinen booleschen Wert zurück, sondern einen der Werte, mit denen sie tatsächlich verglichen werden.

1. und:

>>> 'a' and 'b'
'b'
>>> '' and 'b'
''
>>> 'a' and 'b' and 'c'
'c'
Nach dem Login kopieren

wertet den Wert des Ausdrucks von links nach rechts in einem booleschen Kontext aus. Wenn alle Werte im booleschen Kontext wahr sind, wird der Wert zurückgegeben letzter Wert.

Wenn ein Wert im booleschen Kontext falsch ist, dann gibt und den ersten falschen Wert zurück

2 oder:

>>> 'a' or 'b'
'a'
>>> '' or 'b'
'b'
>>> '' or [] or {}
{}
>>> 0 or 'a' or 'c'
'a'
Nach dem Login kopieren

Bei Verwendung von oder in booleschen Werten ​​werden im Kontext von links nach rechts ausgewertet, genau wie und. Wenn ein Wert wahr ist oder dieser Wert sofort zurückgegeben wird

Wenn alle Werte falsch sind oder der letzte falsche Wert zurückgegeben wird

Beachten Sie, dass oder immer eine Ausdrucksauswertung in einem booleschen Kontext durchführt, bis der erste wahre Wert wird gefunden, die restlichen Vergleichswerte werden ignoriert

3. und-oder:

und-oder kombiniert die beiden vorherigen Syntaxen und kann begründet werden.

>>> a='first'
>>> b='second'
>>> 1 and a or b
'first'
>>> (1 and a) or b
'first'
>>> 0 and a or b
'second'
>>> (0 and a) or b
'second'
>>>
Nach dem Login kopieren

Diese Syntax ähnelt dem bool ? a : b-Ausdruck in der C-Sprache. Der gesamte Ausdruck wird von links nach rechts ausgewertet, sodass der and-Ausdruck zuerst ausgewertet wird. 1 und „erster“ werden zu „erster“ ausgewertet, dann wird „erster“ oder „zweiter“ zu „erster“ ausgewertet.

0 und „erster“ ergeben „Falsch“, dann 0 oder „zweiter“ ergeben „zweiter“.

und-oder wird hauptsächlich verwendet, um den ternären Operator bool?a:b zu imitieren, das heißt, wenn der Ausdruck bool wahr ist, wird a genommen, andernfalls wird b genommen.

Der Und-Oder-Trick, der bool- und a- oder b-Ausdruck, funktioniert nicht wie der C-Sprachausdruck bool a : b, wenn a in einem booleschen Kontext als falsch ausgewertet wird.


4. Sichere Verwendung von und-oder

>>> a=""
>>> b="second"
>>> (1 and [a] or [b])
['']
>>> (1 and [a] or [b])[0]
''
>>>
Nach dem Login kopieren

Da [a] eine nicht leere Liste ist, wird sie niemals falsch sein. Auch wenn a 0 oder '' oder ein anderer falscher Wert ist, ist Liste [a] wahr, weil sie ein Element enthält.

Ein verantwortungsbewusster Programmierer sollte die Und-Oder-Technik in eine Funktion kapseln:

def choose(bool,a,b):
    return (bool and [a] or [b])[0]
print  choose(1,'','second')    #''
Nach dem Login kopieren
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage