Eingehende Analyse von Pythons und/oder Rückgabewerten

高洛峰
Freigeben: 2016-10-17 16:17:46
Original
995 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


von links nach rechts in einem Booleschen Wert context Der Wert des rechten Kalkülausdrucks. Wenn alle Werte im booleschen Kontext wahr sind, gibt und den letzten Wert zurück.

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 or werden Werte in einem booleschen Kontext von links nach rechts ausgewertet, genau wie and. 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 wird der erste wahre Wert gefunden, dann werden die restlichen Vergleichswerte


ignoriert. 3. und-oder:


and-or kombiniert die beiden vorherigen Syntaxen, nur zur Begründung.

>>> 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 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, kann 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