Path: csiph.com!x330-a1.tempe.blueboxinc.net!usenet.pasdenom.info!gegeweb.org!de-l.enfer-du-nord.net!feeder1.enfer-du-nord.net!newsfeed.eweka.nl!eweka.nl!feeder3.eweka.nl!newsfeed.xs4all.nl!newsfeed6.news.xs4all.nl!xs4all!post.news.xs4all.nl!not-for-mail Return-Path: X-Original-To: python-list@python.org Delivered-To: python-list@mail.python.org X-Spam-Status: OK 0.000 X-Spam-Evidence: '*H*': 1.00; '*S*': 0.00; 'received:verizon.net': 0.07; 'symbols': 0.07; 'terry': 0.07; 'typed': 0.07; 'python': 0.08; 'received:80.91': 0.09; 'received:80.91.229': 0.09; 'received:80.91.229.12': 0.09; 'received:gmane.org': 0.09; 'received:list': 0.09; 'received:lo.gmane.org': 0.09; 'case.': 0.15; 'head,': 0.16; 'mutated': 0.16; 'names?': 0.16; 'reedy': 0.16; 'subject:syntax': 0.16; 'terse': 0.16; 'unpacking': 0.16; 'examples': 0.16; 'wrote:': 0.18; 'jan': 0.19; 'header:In-Reply- To:1': 0.22; 'not.': 0.28; 'repeatedly': 0.28; 'pm,': 0.29; 'tail': 0.30; 'does': 0.32; 'represents': 0.32; 'words,': 0.32; 'header:User-Agent:1': 0.33; 'rather': 0.33; 'header:X-Complaints- To:1': 0.33; 'to:addr:python-list': 0.34; 'sequence': 0.37; 'received:org': 0.38; 'some': 0.38; 'represent': 0.39; 'to:addr:python.org': 0.40; 'your': 0.61; 'below': 0.63; 'wish': 0.70; 'seldom': 0.84 X-Injected-Via-Gmane: http://gmane.org/ To: python-list@python.org From: Terry Reedy Subject: Re: Verbose and flexible args and kwargs syntax Date: Mon, 12 Dec 2011 03:44:51 -0500 References: <4EE54066.3020901@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Gmane-NNTP-Posting-Host: pool-74-109-121-73.phlapa.fios.verizon.net User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.0) Gecko/20111105 Thunderbird/8.0 In-Reply-To: <4EE54066.3020901@gmail.com> X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: General discussion list for the Python programming language List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Newsgroups: comp.lang.python Message-ID: Lines: 26 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1323679511 news.xs4all.nl 6936 [2001:888:2000:d::a6]:37590 X-Complaints-To: abuse@xs4all.nl Xref: x330-a1.tempe.blueboxinc.net comp.lang.python:17023 On 12/11/2011 6:44 PM, Eelco Hoogendoorn wrote: > Can you come up with some terse symbols that will be able to express all > of the below and dont make you wish you hadnt rather typed out the names? > > head, tuple(tail) = iterable > head, list(tail) = iterable > head, str(tail) = somestring > head, generator(tail) = mygenerator The above examples are seldom needed in Python because we have one general method to repeatedly split a sequence into head and tail. it = iter(iterable) # 'it' now represents the sequenced iterable head = next(it) # 'it' now represents the tail after removing the head In other words, next(it) encompasses all of your examples and many more. Because 'it' is mutated to represent the tail, it does not need to be rebound and therefore is not. Iterable unpacking with a *target for leftovers is an entirely different use case. -- Terry Jan Reedy