Why can't I use an assignment in an expression?
In Python, assignment is a statement, not an expression, and can therefore not be used inside an arbitrary expression. This means that common C idioms like:
while (line = readline(file)) {
...do something with line...
}
or
if (match = search(target)) {
...do something with match...
}
cannot be used as is in Python. The first example is better written using an iterator:
for line in file: ... do something with line ...
but the second example must be written as:
match = search(target) if match: ... do something with match ...
and loops where an iterator cannot be used have to be written as:
while True: line = file.readline() if not line: break ... do something with lin