recherche

Maison  >  Questions et réponses  >  le corps du texte

python3.x - Problème avec Python et non avec l'opérateur

>>> a = False + 5
5
>>> a = not(1) + 5
False

Comme ci-dessus, will False 直接进行运算时会作为 0 来计算。
使用逻辑运算符 not 时,not(1) 的值为 False0.

Mais pourquoi ajouter directement not(1) 放进算术运算后再次计算的结果为 False ?
Est-ce lié à la logique algorithmique de Python ?

phpcn_u1582phpcn_u15822781 Il y a quelques jours1340

répondre à tous(3)je répondrai

  • 怪我咯

    怪我咯2017-06-22 11:54:39

    Parce quenot不是一个函数, 是一个表达式, 不管你not(1)+5 还是 not (1+5), sa fonction est simplement d'inverser le résultat suivant.
    Par exemple :

    >>> not 1 + 2
    False
    
    >>> not (1 + 2)
    False
    
    >>> not (1 + 2) + 1
    False
    
    >>> (not (1 + 2)) + 1
    1

    répondre
    0
  • 漂亮男人

    漂亮男人2017-06-22 11:54:39

    Utilisation de l'opérateur not dans les opérations booléennes Python :

    pas x

    si x est faux, alors Vrai, sinon Faux

    De plus, la priorité de l'opérateur + est supérieure à celle de l'opérateur +运算符的优先级(precedence)高于not运算符,所以not(1) + 5中先计算(1) + 5, 后面的(1)+5作为not, donc (1) + 5 est calculé en premier dans not(1) + 5 , le (1)+5 suivant sert d'opérande de l'opérateur

    . Par exemple, vous pouvez voir : 🎜.
    not(-1)      # False
    not(-1) + 1  # True

    répondre
    0
  • 天蓬老师

    天蓬老师2017-06-22 11:54:39

    正如上面所说,因为 not operator 的优先级小于 +  
    所以 not(1)+6 会被翻译为 not (1)+5
    关于这些情况,你完全可以通过 dis模块 来查看具体的过程。
    
    >>> import dis
    >>> dis.dis("a = False + 5")
      1           0 LOAD_CONST               3 (5)
                  3 STORE_NAME               0 (a)
                  6 LOAD_CONST               2 (None)
                  9 RETURN_VALUE
    >>> dis.dis("a = not(1) + 5")
      1           0 LOAD_CONST               3 (6)
                  3 UNARY_NOT
                  4 STORE_NAME               0 (a)
                  7 LOAD_CONST               2 (None)
                 10 RETURN_VALUE
    

    répondre
    0
  • Annulerrépondre