Maison  >  Article  >  développement back-end  >  Partagez un exemple de tutoriel sur la logique de fonctionnement de et/ou en python

Partagez un exemple de tutoriel sur la logique de fonctionnement de et/ou en python

零下一度
零下一度original
2017-05-26 11:58:442562parcourir

pythonL'idée de base des opérations et et/ou - logique de court-circuit

Commencé En lisant récemment le tutoriel Python de Liao Xuefeng, j'ai l'intention de mettre "apprendre Python à la dure" en premier, car les derniers chapitres me semblent encore un peu difficiles (enfin, je suis trop faible, mais prenez votre temps, une étape à la fois), en y réfléchissant Après avoir lu le tutoriel de Liao Xuefeng, revenez en arrière et vous pourrez peut-être avoir quelques idées.

Bon, revenons au sujet, la raison pour laquelle j'ai écrit ceci aujourd'hui est que l'opération et/ou est apparue dans le chapitre sur les filtres du tutoriel de Liao Xuefeng. Cela n'a pas été mentionné dans le tutoriel précédent. confus quand je l'ai lu pour la première fois, j'étais confus, le code est le suivant :

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

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

Plus tard, j'ai vérifié une logique opérationnelle sur et/ou sur Internet, et j'ai ajouté ma propre compréhension, et je l'ai résumé comme suit (je ne sais pas si c'est faux), veuillez me corriger s'il y a des erreurs) :

1 Contient un opérateur logique

D'abord. , commençons par les concepts de base. Quels objets en python seront traités comme False ? Et lesquels sont vrais ?

** En Python, Aucun, 0 dans n'importe quel type numérique, chaîne vide "", tuple vide (), liste vide [], dictionnaire vide {} sont traités comme False, et si un type personnalisé implémente le non nul () ou len () et la méthode renvoie 0 ou False, son instance sera également traitée comme False et les autres objets seront True. **

Ce qui suit est l'opération logique la plus simple :

    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

En utilisant les deux points ci-dessus, nous pouvons donner quelques exemples :

exemple 1

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

 a[0] = 0, a[1] = 1, donc a[0] et a[1] deviennent 0 et 1 (Faux et Vrai), donc c'est 0 (Faux).

exemple 2

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

Si les deux sont faux en même temps, renvoie la valeur de gauche.

2. Contient deux opérateurs logiques ou plus

Lorsqu'il y a plus d'un opérateur logique et/ou, l'idée centrale de ses règles de fonctionnement est la logique de court-circuit. D'accord, jetons un coup d'œil à la pensée de court-circuit (mon résumé peut être différent des opinions d'autres personnes sur Internet, veuillez écouter mon analyse lentement) :

ExpressionDe Opération de gauche à droite, si la valeur logique du côté gauche de ou est vraie, toutes les expressions après ou seront court-circuitées et l'expression du côté gauche de ou sera sortie directement.

Les expressions sont évaluées de gauche à droite. Si la valeur logique à gauche de et est False, toutes les expressions suivantes seront court-circuitées jusqu'à ce que ou apparaisse, et l'expression sur le côté gauche de et sera affiché. Allez sur le côté gauche de ou et participez à la prochaine opération logique.

Si le côté gauche de ou est Faux, ou si le côté gauche de et est Vrai, la logique de court-circuit ne peut pas être utilisée.

C'est peut-être un peu abstrait, ce n'est pas grave, donnons ensuite quelques exemples.

Voici une méthode astucieuse qui nous permet de comprendre intuitivement la situation de court-circuit lorsque Python traite ces instructions logiques (je l'ai aussi appris des autres)

Bon, commençons par le simple At au début, supposons qu'il s'agit de toutes les déclarations et ou de toutes les déclarations ou :

exemple 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

 La valeur logique de a() est False, suivie des déclarations et, toutes courtes- circuité, renvoie enfin l'expression de a().

exemple 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

 La valeur logique de a() est True et ne peut pas être court-circuitée. Après cela, il effectue une opération logique avec b() et renvoie la valeur logique. True de b(), qui est identique à c() effectue des opérations logiques et renvoie la valeur logique False de c(). Si toutes sont suivies d'instructions and, elles sont toutes court-circuitées et l'expression de c() est. est finalement revenu.

exemple 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

 La valeur logique de a() est True, suivie des instructions or, toutes court-circuitées, et enfin l'expression de a() est renvoyée.

exemple 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

 La valeur logique de a() est True et ne peut pas être court-circuitée. Ensuite, effectuez une opération logique avec b() et renvoyez la valeur logique False de. b(), qui est identique à c(), effectue des opérations logiques et renvoie la valeur logique True de c(). Si toutes sont suivies d'instructions ou, alors elles sont toutes court-circuitées et l'expression de c() est finalement. est revenu.

Parlons maintenant de la situation où les déclarations et et ou coexistent :

exemple 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

Ne pensez pas que la déclaration est trop long C'est difficile. Analysons-le attentivement. Tout d'abord, la valeur logique de a() est False, puis il y a trois instructions and jusqu'à l'instruction or : a() et b() et c() et d(). , qui sont tous court-circuités. Si a() ou e() est True, affichez e(). Si e() et F() sont True, affichez f(). Si elles sont suivies d'une instruction ou, toutes les instructions suivantes seront court-circuitées. (Avec une bonne compréhension des trois points de la logique de court-circuit que j'ai résumé, il ne devrait y avoir aucun problème.)

3 Opération ternaireopérateur

.

Avant python2.5, python n'avait pas d'opérateur ternaire. Guido Van Rossum pensait que cela n'aidait pas python à devenir plus concis, mais les programmeurs habitués à la programmation C, C++ et Java ont essayé d'utiliser et ou ou de simuler. l'opérateur ternaire, et cela utilise la logique de court-circuit de python.

 Opérateur d'opération ternaire bool ? a : b , si bool est vrai, alors a , sinon 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:逻辑判断与运算符实例

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn