There are many who feel that having assignments be expressions, especially in languages like Python where any value is allowable in a condition (not just values of some boolean type), is error-prone. Presumably Guido is/was among those who feel that way. The classic error is:
if x = y: # oops! meant to say ==
The situation is also a bit more complicated in Python than it is in a language like C, since in Python the first assignment to a variable is also its declaration. For example:
def f():
print x
def g():
x = h()
print x
In these two functions the “print x
” lines do different things: one refers to the global variable x
, and the other refers to the local variable x
. The x
in g
is local because of the assignment. This could be even more confusing (than it already is) if it was possible to bury the assignment inside some larger expression/statement.