Armin Ronacher
Hi all,
Many languages allow assignment expressions in if conditions. (Perl, PHP, Ruby, C, etc..) I know that this was dismissed by guido because it can lead to mistakes. And i can support that. However in some situations it might be required because you have to nest if blocks and regular expressions for example::
[snip] You could convert the code you have offered into the following: while pos < text_length: match = name_re.match(text, pos) or \ digit_re.match(text, pos) or \ None if match: post = match.end() do_something(match) else: pos += 1 Not only does it work today in any Python with the re module, has the same number of lines as what you provided, and doesn't repeat itself, it can be shortened with a simple helper function. -1 Also, I think it would be confusing. It is currently used in imports and the with statement, but it was *necessary* to have some assignment semantic in with statement - there is no such necessity in if/elif (or even while, which is the next step after if/elif). - Josiah