I just came across this piece of code
while 1:
line = data.readline()
if not line:
break
#...
and thought, there must be a better way to do this, than using an infinite loop with break
.
So I tried:
while line = data.readline():
#...
and, obviously, got an error.
Is there any way to avoid using a break
in that situation?
Ideally, you'd want to avoid saying readline
twice... IMHO, repeating is even worse than just a break
, especially if the statement is complex.
Starting Python 3.8
, and the introduction of assignment expressions (PEP 572) (:=
operator), it's now possible to capture the condition value (data.readline()
) of the while loop as a variable (line
) in order to re-use it within the body of the loop:
while line := data.readline():
do_smthg(line)