Heim  >  Artikel  >  Backend-Entwicklung  >  Teilen Sie ein Beispiel-Tutorial zur Betriebslogik von und/oder in Python

Teilen Sie ein Beispiel-Tutorial zur Betriebslogik von und/oder in Python

零下一度
零下一度Original
2017-05-26 11:58:442562Durchsuche

PythonDie Kernidee von und und oder Operationen - Kurzschlusslogik

Gestartet Als ich vor Kurzem das Python-Tutorial von Liao , darüber nachdenken Nachdem Sie das Tutorial von Liao Xuefeng gelesen haben, gehen Sie noch einmal zurück und vielleicht können Sie sich ein paar Ideen holen.

Okay, zurück zum Thema, der Grund, warum ich das heute geschrieben habe, ist, dass die und/oder-Operation im Filterkapitel von Liao Xuefengs Tutorial auftauchte. Dies wurde im vorherigen Tutorial nicht erwähnt Als ich es zum ersten Mal las, war ich verwirrt. Der Code lautete wie folgt:

    #把一个序列中的空字符串删掉

    1>  def not_empty(s):
    2>      return s and s.strip()
    3>
    4>  filter(not_empty, ['A', '', 'B', None, 'C', '  '])

Später habe ich einige Betriebslogiken über und / oder im Internet überprüft und hinzugefügt Mein eigenes Verständnis und ich habe es wie folgt zusammengefasst (ich weiß nicht, ob es falsch ist). Bitte korrigieren Sie mich, wenn es Fehler gibt):

1 Enthält einen logischen Operator

Erstens Beginnen wir mit den Grundkonzepten. Welche Objekte werden in Python als falsch behandelt? Und welche davon sind wahr?

** In Python werden None, 0 in jedem numerischen Typ, leere Zeichenfolge „“, leeres Tupel (), leere Liste [], leeres Wörterbuch {} als False behandelt und wenn ein benutzerdefinierter Typ das implementiert Wenn die Methode () oder len() ungleich Null ist und die Methode 0 oder False zurückgibt, wird ihre Instanz ebenfalls als False behandelt und andere Objekte sind True. **

Das Folgende ist die einfachste logische Operation:

    True  and True    ==> True                  True  or True    ==> True
    True  and False   ==> False                 True  or False   ==> True
    False and True    ==> False                 False or True    ==> True
    False and False   ==> False                 False or False   ==> False

Anhand der beiden oben genannten Punkte können wir einige Beispiele nennen:

Beispiel 1

    >>> a = [0, 1, '' ,3]
    >>> a[0] and a[1]
    0

 a[0] = 0, a[1] = 1, also werden a[0] und a[1] zu 0 und 1 (Falsch und Wahr), also ist es 0 (Falsch).

Beispiel 2

    >>> a = [0, 1, '' ,3]
    >>> a[2] and a[1]
    ''

Wenn beide gleichzeitig False sind, geben Sie den Wert auf der linken Seite zurück.

2. Enthält zwei oder mehr logische Operatoren

Wenn es mehr als einen logischen Operator gibt und/oder, ist die Kernidee seiner Operationsregeln die Kurzschlusslogik. Okay, werfen wir einen Blick auf das Kurzschlussdenken (meine Zusammenfassung weicht möglicherweise von den Meinungen anderer Leute im Internet ab, bitte hören Sie sich meine Analyse langsam an):

AusdruckVon Links-nach-rechts-Operation: Wenn der logische Wert auf der linken Seite von oder wahr ist, werden alle Ausdrücke nach oder kurzgeschlossen und der Ausdruck auf der linken Seite von oder wird direkt ausgegeben.

Ausdrücke werden von links nach rechts ausgewertet. Wenn der logische Wert auf der linken Seite von und falsch ist, werden alle nachfolgenden und-Ausdrücke kurzgeschlossen, bis oder erscheint und der Ausdruck eingeschaltet ist Die linke Seite von und wird ausgegeben. Gehen Sie zur linken Seite von oder und nehmen Sie an der nächsten logischen Operation teil.

Wenn die linke Seite von oder „False“ oder die linke Seite von „und“ „True“ ist, kann die Kurzschlusslogik nicht verwendet werden.

Es ist vielleicht etwas abstrakt, aber das ist in Ordnung. Lassen Sie uns als Nächstes einige Beispiele nennen.

Hier ist eine clevere Methode, die es uns ermöglicht, die Kurzschlusssituation intuitiv zu verstehen, wenn Python diese logischen Anweisungen verarbeitet (ich habe es auch von anderen gelernt)

Okay, fangen wir mit dem einfachen At an Gehen Sie zu Beginn davon aus, dass es sich um alle und-Anweisungen oder alle oder-Anweisungen handelt:

Beispiel 1

    1>  def a():
    2>      print 'A'
    3>      return []
    4>  def b():
    5>      print 'B'
    6>      return []
    7>  def c():
    8>      print 'C'
    9>      return 1
    10> def d():
    11>     print 'D'
    12>     return []
    13> def e():
    14>     print 'E'
    15>     return 1
    16>
    17> if a() and b() and c() and d() and e():
    18>     print 'ok'
    
    #显示结果如下
    A

 Der logische Wert von a() ist Falsch, gefolgt von und-Anweisungen, alle kurz- geschaltet, gibt schließlich den Ausdruck von a() zurück.

Beispiel 2

    1>  def a():
    2>      print 'A'
    3>      return 1
    4>  def b():
    5>      print 'B'
    6>      return 1
    7>  def c():
    8>      print 'C'
    9>      return []
    10> def d():
    11>     print 'D'
    12>     return []
    13> def e():
    14>     print 'E'
    15>     return 1
    16>
    17> if a() and b() and c() and d() and e():
    18>     print 'ok'

    #显示结果如下
    A
    B
    C

 Der logische Wert von a() ist True und kann nicht kurzgeschlossen werden. Dann führt es eine logische Operation mit b() aus und gibt den logischen Wert True zurück von b(), das dasselbe ist wie c(), führt logische Operationen aus und gibt den logischen Wert False von c() zurück. Wenn auf alle und-Anweisungen folgen, werden sie alle kurzgeschlossen und der Ausdruck von c() ist endgültig zurückgegeben.

Beispiel 3

    1>  def a():
    2>      print 'A'
    3>      return 1
    4>  def b():
    5>      print 'B'
    6>      return []
    7>  def c():
    8>      print 'C'
    9>      return 1
    10> def d():
    11>     print 'D'
    12>     return []
    13> def e():
    14>     print 'E'
    15>     return 1
    16>
    17> if a() or b() or c() or d() or e():
    18>     print 'ok'

    #显示结果如下
    A
    ok

 Der logische Wert von a() ist True, gefolgt von oder-Anweisungen, alle kurzgeschlossen, und schließlich wird der Ausdruck von a() zurückgegeben.

Beispiel 4

    1>  def a():
    2>      print 'A'
    3>      return []
    4>  def b():
    5>      print 'B'
    6>      return []
    7>  def c():
    8>      print 'C'
    9>      return 1
    10> def d():
    11>     print 'D'
    12>     return []
    13> def e():
    14>     print 'E'
    15>     return 1
    16>
    17> if a() or b() or c() or d() or e():
    18>     print 'ok'

    #显示结果如下
    A
    B
    C
    ok

 Der logische Wert von a() ist True und kann nicht kurzgeschlossen werden. Führen Sie dann eine logische Operation mit b() aus und geben Sie den logischen Wert False von zurück b(), das mit c() identisch ist, führt logische Operationen aus und gibt den logischen Wert „True“ von c() zurück. Wenn auf alle Anweisungen „or“ folgt, werden sie alle kurzgeschlossen und der Ausdruck von c() lautet „final“. zurückgegeben.

Lassen Sie uns nun über die Situation sprechen, in der und und oder Aussagen nebeneinander existieren:

Beispiel 5

    1>  def a():
    2>      print 'A'
    3>      return []
    4>  def b():
    5>      print 'B'
    6>      return []
    7>  def c():
    8>      print 'C'
    9>      return 1
    10> def d():
    11>     print 'D'
    12>     return []
    13> def e():
    14>     print 'E'
    15>     return 1
    16> def f():
    17>     print 'F'
    18>     return 1
    19> def g():
    20>     print 'G'
    21>     return []
    22> def h():
    23>     print 'H'
    24>     return 1
    25>
    26> if a() and b() and  c() and d() or e() and f() or g() and h():
    27>     print 'ok'

    #输出结果如下:
    A
    E
    F
    ok

Denken Sie nicht, dass die Aussage vorhanden ist Zu lang Es ist schwierig. Zuerst ist der logische Wert von a() False, und dann gibt es drei and-Anweisungen bis zur or-Anweisung: a() und b() sowie c() und d(). , die alle kurzgeschlossen sind. Wenn a() oder e() wahr ist, wird e() ausgegeben. Wenn e() und F() wahr sind, wird f() ausgegeben. Wenn darauf eine or-Anweisung folgt, werden alle nachfolgenden Anweisungen kurzgeschlossen. (Mit einem guten Verständnis der drei Punkte der Kurzschlusslogik, die ich zusammengefasst habe, sollte es kein Problem geben.)

3 Vor Python 2.5 gab es in Python keinen ternären Operator. Guido Van Rossum glaubte, dass dies Python nicht prägnanter machte, aber Programmierer, die mit C-, C++- und Java-Programmierung vertraut waren, versuchten, diese zu verwenden und/oder zu simulieren der ternäre Operator, und dieser nutzt die Kurzschlusslogik von Python.  Ternärer Operationsoperator bool a : b , wenn bool wahr ist, dann a , andernfalls b .

  转化为 python 语言为:

        bool and a or b

  如何理解呢? 首先 a , b 都为真,这是默认的。如果 bool 为真, 则 bool and a 为真,输出 a ,短路 b 。如果 bool 为假,短路 a,直接 bool or b ,输出 b 。

  换一种更简单的写法:

       return a if bool else b

【相关推荐】

1. Python and、or以及and-or语法总结

2. 解析python中and与or用法

3. 详细介绍Python中and和or实际用法

4. 总结Python的逻辑运算符and

5. Python:逻辑判断与运算符实例

Das obige ist der detaillierte Inhalt vonTeilen Sie ein Beispiel-Tutorial zur Betriebslogik von und/oder in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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