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! ^_^
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 theif
expression. Consider this Javascript code:let a = b = 1
b
variable and assigns it the value of the expression1
, which is one.b = 1
, which is the assigned value, which is1
.a
variable and assigns the previously returned value, which is1
.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.With python you can use the := to assign and return new value.
Walrus operator my beloved