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!

  • FizzyOrange
    link
    fedilink
    arrow-up
    8
    ·
    2 hours ago

    >= and <= match the mathematical operators. The question you want to ask is why doesn’t it use = for equality, and the answer is that = is already used for assignment (inherited from C among other languages).

    In theory a language could use = for assignment and equality but it might be a bit confusing and error prone. Maybe not though. Someone try it and report back.

  • WolfLink@sh.itjust.works
    link
    fedilink
    arrow-up
    3
    ·
    2 hours ago

    It’s all convention coming from older programming languages, particularly C, which comes from programmers wanting shorthand for things like “BRANCH_EQUAL $1 $2 $3” which is shorthand for some binary code.

    Python has changed the logical and and or operators to be and and or instead of && and ||.

  • _stranger_@lemmy.world
    link
    fedilink
    arrow-up
    23
    ·
    5 hours ago

    It would be confusing and weird if “=” did different things depending on the context.

    = is the assignment operator

    == is the comparison operator.

    the others using = only is probably just to keep things short, and the fact that the context is a lot clearer with another character like < next to the =

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

      Pascal uses = for comparison (and := for assignment), which confused the fuck out of me when I switched to C.

      • driving_crooner@lemmy.eco.br
        link
        fedilink
        arrow-up
        4
        ·
        5 hours ago

        Some people in mathematics use := to assign functions, like f(x) := x^2; then when evaluating the function you use f(2) = 4, because it can be ser as a “true” comparison

        • rtxn@lemmy.world
          link
          fedilink
          English
          arrow-up
          1
          ·
          4 hours ago

          I’ve never seen that, even in university, and it would be equally as confusing without explanation.

          • driving_crooner@lemmy.eco.br
            link
            fedilink
            arrow-up
            1
            ·
            4 hours ago

            I only remember two of my professors using it, and I has to ask the first one what that mean and explain to my classmates on the second one.

  • subignition@fedia.io
    cake
    link
    fedilink
    arrow-up
    3
    ·
    4 hours ago

    If I were to speculate, I’d say it came from the == operator (Boolean equality comparison) and then later, when that was extended to include Boolean less-than-or-equal and greater-than-or-equal, the decision was made to keep them 2 characters long. Either because it was visually cleaner, or just because programmers love being lazy (read: efficient)

  • rtxn@lemmy.world
    link
    fedilink
    English
    arrow-up
    6
    ·
    edit-2
    5 hours 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.

  • rockSlayer@lemmy.world
    link
    fedilink
    arrow-up
    6
    ·
    5 hours ago

    It’s still a mathematic operator. There’s an entire field of math dedicated to comparisons, and it’s featured heavily in most programming languages. Computer science is a field dedicated to the application of math

  • Successful_Try543@feddit.org
    link
    fedilink
    arrow-up
    6
    ·
    edit-2
    5 hours ago

    <= is already no mathematical assignment operator, but a comparison operator. Thus there is no need to define e.g. <== for comparing two values.

  • iii@mander.xyz
    link
    fedilink
    English
    arrow-up
    1
    ·
    edit-2
    5 hours ago

    I get your point of view, and haven’t thought about it that way before.

    As for why it’s like that, my best guess is the sentence I wrote above. Your proposal totally makes sense.