On 25 April 2018 at 01:35, Yury Selivanov <yselivanov...@gmail.com> wrote: > On Tue, Apr 24, 2018 at 11:31 AM, Nick Coghlan <ncogh...@gmail.com> wrote: >> I *do* think the "no name rebinding except in a while loop header" >> restriction would be annoying for the if/elif use case and the while >> use case: >> >> while (item = get_item()) is not first_delimiter: >> # First processing loop >> while (item = get_item()) is not second_delimiter: >> # Second processing loop >> # etc... >> >> if (target = get_first_candidate()) is not None: >> ... >> elif (target = get_second_candidate()) is not None: >> ... >> elif (target = get_third_candidate()) is not None: >> ... > > Yes, it would force users to come up with better names *iff* they want > to use this new sugar: > > if (first_target = get_first_candidate()) ... > elif (second_target = get_second_candidate()) ...
Sorry, I didn't make the intended nature of that example clear: if (target = get_first_candidate()) is not None: ... # Any setup code specific to this kind of target elif (target = get_second_candidate()) is not None: ... # Any setup code specific to this kind of target elif (target = get_third_candidate()) is not None: ... # Any setup code specific to this kind of target else: raise RuntimeError("No valid candidate found") # Common code using target goes here Using a separate name in each branch wouldn't solve the problem of binding the *same* name for the common code to use later - you'd have to put a "target = candidate_n" bit of boilerplate in each branch. Cheers, Nick. -- Nick Coghlan | ncogh...@gmail.com | Brisbane, Australia _______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com