On Aug 17, 5:45 am, Chris Angelico <ros...@gmail.com> wrote: (snip) > > Right. Call the proposed syntax the "instantiate separately for each > > target" operator. > (snip) > It might just > as easily be some other function call; for instance: > > head1,head2,head3=file.readline()
Hm--that's interesting! OK, call it the "evaluate separately for each target" operator. Same benefits in this use case; if I realize that the file only has two header lines, I can just change head1, head2, head3 = *file.readline() to head1, head2 = *file.readline() without needing to keep a RHS like = [file.readline() for _ in range(3)] in lockstep with the number of variables I'm assigning. Presumably this syntax should be disallowed, as a grammatical matter, when there's a starred target (per PEP 3132/language reference 6.2). That is, head, *body, tail = *file.readline() is disallowed, since it is (by definition) simply sugar for head = file.readline() *body = file.readline() tail = file.readline() and *body = file.readline() is disallowed (see PEP 3132). (Here, of course, you'd just want head, *body, tail = file.readlines(), which is perfectly good code.) PS. Off-topic, but the *target syntax already gets into similar territory, since a, *b, c = itertools.count() crashes with a MemoryError--but what else could it do? Ruling out such infinite-assignment statements on a grammatical basis would require solving the halting problem through static analysis, which might be a bit inefficient :P -- http://mail.python.org/mailman/listinfo/python-list