recherche

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

涉及逻辑运算的python表达式的运算顺序

以下代码并不报错,而我理解在"point 1"处如果先运算小括号里面的表达式,而y并不存在,不应该报错吗?难道发现x == 10的短路运算优先于小括号里面的表达式运算?

将这一行中x == 10改为x == 100后报错了,这个理解没问题。

# coding: utf-8

if __name__ == "__main__":
    x = 100
    if x == 10:
        y = 200
    # no y exist here
    if x == 10 and (y - 1 == 199):    # point 1
        print "ok"
高洛峰高洛峰2889 Il y a quelques jours415

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

  • 伊谢尔伦

    伊谢尔伦2017-04-18 09:33:29

    Calculer de gauche à droite

    Les parenthèses ne changent rien à ce fait

    répondre
    0
  • ringa_lee

    ringa_lee2017-04-18 09:33:29

    C'est normal. Il est recommandé de lire ce post :

    L'idée de base des opérations et et ou en Python ——— logique de court-circuit

    Dans votre exemple, le and avant x == 10 est False, donc toutes les expressions and suivantes sont court-circuitées jusqu'à ce que or apparaisse et que l'expression sur le côté gauche de and soit affichée à Le côté gauche de or participe à l'opération logique suivante, mais il n'est pas trouvé, donc l'expression and à droite de (y - 1 == 199) est directement ignorée, ce qui équivaut à air

    ;

    Si vous remplacez x == 10 par x == 100, alors le côté gauche de and est True. L'expression du côté droit ne peut pas être court-circuitée et doit participer à des opérations logiques. car la variable locale y n'a pas été créée, donc une erreur sera signalée. Le contenu de l'erreur devrait être similaire à ceci

    .
    NameError: name 'y' is not defined

    répondre
    0
  • 巴扎黑

    巴扎黑2017-04-18 09:33:29

    1!!!!!!!!!!!!!!!!!!

    répondre
    0
  • Annulerrépondre