How does compare work if value1 == value2 is not None in python?












1














I have found that



a == b is not None


compared a == b and if it is True than executed b is not None.



(a == b) is not None  


and



a == (b is not None)


Where can I find more information about such behavior?
It is quite simple, but I expected True is not None to be executed










share|improve this question






















  • 6.16 Operator Precedence
    – DOOM
    Dec 28 '18 at 9:48


















1














I have found that



a == b is not None


compared a == b and if it is True than executed b is not None.



(a == b) is not None  


and



a == (b is not None)


Where can I find more information about such behavior?
It is quite simple, but I expected True is not None to be executed










share|improve this question






















  • 6.16 Operator Precedence
    – DOOM
    Dec 28 '18 at 9:48
















1












1








1







I have found that



a == b is not None


compared a == b and if it is True than executed b is not None.



(a == b) is not None  


and



a == (b is not None)


Where can I find more information about such behavior?
It is quite simple, but I expected True is not None to be executed










share|improve this question













I have found that



a == b is not None


compared a == b and if it is True than executed b is not None.



(a == b) is not None  


and



a == (b is not None)


Where can I find more information about such behavior?
It is quite simple, but I expected True is not None to be executed







python logical-operators






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Dec 28 '18 at 9:45









Ruslan GalimovRuslan Galimov

1378




1378












  • 6.16 Operator Precedence
    – DOOM
    Dec 28 '18 at 9:48




















  • 6.16 Operator Precedence
    – DOOM
    Dec 28 '18 at 9:48


















6.16 Operator Precedence
– DOOM
Dec 28 '18 at 9:48






6.16 Operator Precedence
– DOOM
Dec 28 '18 at 9:48














1 Answer
1






active

oldest

votes


















2














This is documented in the language reference, 6.10. Comparisons:




Unlike C, all comparison operations in Python have the same priority, which is lower than that of any arithmetic, shifting or bitwise operation. Also unlike C, expressions like a < b < c have the interpretation that is conventional in mathematics:



comparison    ::=  or_expr (comp_operator or_expr)*
comp_operator ::= "<" | ">" | "==" | ">=" | "<=" | "!="
| "is" ["not"] | ["not"] "in"


Comparisons yield boolean values: True or False.



Comparisons can be chained arbitrarily, e.g., x < y <= z is equivalent to x < y and y <= z, except that y is evaluated only once (but in both cases z is not evaluated at all when x < y is found to be false).



Formally, if a, b, c, , y, z are expressions and op1, op2, , opN are comparison operators, then a op1 b op2 c ... y opN z is equivalent to a op1 b and b op2 c and ... y opN z, except that each expression is evaluated at most once.



Note that a op1 b op2 c doesn’t imply any kind of comparison between a and c, so that, e.g., x < y > z is perfectly legal (though perhaps not pretty).




Both == and is not are comparison operators, so they chain as described above.






share|improve this answer





















    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53956480%2fhow-does-compare-work-if-value1-value2-is-not-none-in-python%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    2














    This is documented in the language reference, 6.10. Comparisons:




    Unlike C, all comparison operations in Python have the same priority, which is lower than that of any arithmetic, shifting or bitwise operation. Also unlike C, expressions like a < b < c have the interpretation that is conventional in mathematics:



    comparison    ::=  or_expr (comp_operator or_expr)*
    comp_operator ::= "<" | ">" | "==" | ">=" | "<=" | "!="
    | "is" ["not"] | ["not"] "in"


    Comparisons yield boolean values: True or False.



    Comparisons can be chained arbitrarily, e.g., x < y <= z is equivalent to x < y and y <= z, except that y is evaluated only once (but in both cases z is not evaluated at all when x < y is found to be false).



    Formally, if a, b, c, , y, z are expressions and op1, op2, , opN are comparison operators, then a op1 b op2 c ... y opN z is equivalent to a op1 b and b op2 c and ... y opN z, except that each expression is evaluated at most once.



    Note that a op1 b op2 c doesn’t imply any kind of comparison between a and c, so that, e.g., x < y > z is perfectly legal (though perhaps not pretty).




    Both == and is not are comparison operators, so they chain as described above.






    share|improve this answer


























      2














      This is documented in the language reference, 6.10. Comparisons:




      Unlike C, all comparison operations in Python have the same priority, which is lower than that of any arithmetic, shifting or bitwise operation. Also unlike C, expressions like a < b < c have the interpretation that is conventional in mathematics:



      comparison    ::=  or_expr (comp_operator or_expr)*
      comp_operator ::= "<" | ">" | "==" | ">=" | "<=" | "!="
      | "is" ["not"] | ["not"] "in"


      Comparisons yield boolean values: True or False.



      Comparisons can be chained arbitrarily, e.g., x < y <= z is equivalent to x < y and y <= z, except that y is evaluated only once (but in both cases z is not evaluated at all when x < y is found to be false).



      Formally, if a, b, c, , y, z are expressions and op1, op2, , opN are comparison operators, then a op1 b op2 c ... y opN z is equivalent to a op1 b and b op2 c and ... y opN z, except that each expression is evaluated at most once.



      Note that a op1 b op2 c doesn’t imply any kind of comparison between a and c, so that, e.g., x < y > z is perfectly legal (though perhaps not pretty).




      Both == and is not are comparison operators, so they chain as described above.






      share|improve this answer
























        2












        2








        2






        This is documented in the language reference, 6.10. Comparisons:




        Unlike C, all comparison operations in Python have the same priority, which is lower than that of any arithmetic, shifting or bitwise operation. Also unlike C, expressions like a < b < c have the interpretation that is conventional in mathematics:



        comparison    ::=  or_expr (comp_operator or_expr)*
        comp_operator ::= "<" | ">" | "==" | ">=" | "<=" | "!="
        | "is" ["not"] | ["not"] "in"


        Comparisons yield boolean values: True or False.



        Comparisons can be chained arbitrarily, e.g., x < y <= z is equivalent to x < y and y <= z, except that y is evaluated only once (but in both cases z is not evaluated at all when x < y is found to be false).



        Formally, if a, b, c, , y, z are expressions and op1, op2, , opN are comparison operators, then a op1 b op2 c ... y opN z is equivalent to a op1 b and b op2 c and ... y opN z, except that each expression is evaluated at most once.



        Note that a op1 b op2 c doesn’t imply any kind of comparison between a and c, so that, e.g., x < y > z is perfectly legal (though perhaps not pretty).




        Both == and is not are comparison operators, so they chain as described above.






        share|improve this answer












        This is documented in the language reference, 6.10. Comparisons:




        Unlike C, all comparison operations in Python have the same priority, which is lower than that of any arithmetic, shifting or bitwise operation. Also unlike C, expressions like a < b < c have the interpretation that is conventional in mathematics:



        comparison    ::=  or_expr (comp_operator or_expr)*
        comp_operator ::= "<" | ">" | "==" | ">=" | "<=" | "!="
        | "is" ["not"] | ["not"] "in"


        Comparisons yield boolean values: True or False.



        Comparisons can be chained arbitrarily, e.g., x < y <= z is equivalent to x < y and y <= z, except that y is evaluated only once (but in both cases z is not evaluated at all when x < y is found to be false).



        Formally, if a, b, c, , y, z are expressions and op1, op2, , opN are comparison operators, then a op1 b op2 c ... y opN z is equivalent to a op1 b and b op2 c and ... y opN z, except that each expression is evaluated at most once.



        Note that a op1 b op2 c doesn’t imply any kind of comparison between a and c, so that, e.g., x < y > z is perfectly legal (though perhaps not pretty).




        Both == and is not are comparison operators, so they chain as described above.







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Dec 28 '18 at 9:49









        melpomenemelpomene

        58.9k54489




        58.9k54489






























            draft saved

            draft discarded




















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.





            Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


            Please pay close attention to the following guidance:


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53956480%2fhow-does-compare-work-if-value1-value2-is-not-none-in-python%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            Monofisismo

            Angular Downloading a file using contenturl with Basic Authentication

            Olmecas