Note: The attached image is a screenshot of page 31 of Dr. Charles Severance’s book, Python for Everybody: Exploring Data Using Python 3 (2024-01-01 Revision).


I thought = was a mathematical operator, not a logical operator; why does Python use

>= instead of >==, or <= instead of <==, or != instead of !==?

Thanks in advance for any clarification. I would have posted this in the help forums of FreeCodeCamp, but I wasn’t sure if this question was too…unspecified(?) for that domain.

Cheers!

 


Edit: I think I get it now! Thanks so much to everyone for helping, and @FizzyOrange@programming.dev and @itslilith@lemmy.blahaj.zone in particular! ^_^

  • rtxn@lemmy.world
    link
    fedilink
    English
    arrow-up
    8
    ·
    edit-2
    5 days ago

    It’s a convention set by early programming languages.

    In most C-like languages, if (a = b)... is also a valid comparison. The = (assignment) operation returns the assigned value as a result, which is then converted to a boolean value by the if expression. Consider this Javascript code:

    let a = b = 1
    
    1. It first declares the b variable and assigns it the value of the expression 1, which is one.
    2. It returns the result of the expression b = 1, which is the assigned value, which is 1.
    3. It declares the a variable and assigns the previously returned value, which is 1.

    Another example:

    let a = 1
    let b = 2
    let c = 3
    console.log(a == b) // prints "false" because the comparison is false
    console.log(a = b) // prints 2 because the expression returns the value of the assignment, which is 'b', which is 2
    
    // Using this in an 'if' statement:
    if (b = c) { // the result of the assignment is 3, which is converted to a boolean true
        console.log("what")
    }
    

    You can’t do the same in Python (it will fail with a syntax error), but it’s better to adhere to convention because it doesn’t hurt anyone, but going against it might confuse programmers who have greater experience with another language. Like I was when I switched from Pascal (which uses = for comparison and := for assignment) to C.