Path: csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!feeder.erje.net!eu.feeder.erje.net!xlned.com!feeder1.xlned.com!newsfeed.xs4all.nl!newsfeed4a.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.033 X-Spam-Evidence: '*H*': 0.93; '*S*': 0.00; 'arguments': 0.09; 'definition,': 0.09; 'subtle': 0.09; 'jan': 0.12; 'be:': 0.16; 'bugs.': 0.16; 'syntaxerror:': 0.16; 'tuple': 0.16; 'tuple,': 0.16; 'unpacking': 0.16; 'wrote:': 0.18; 'dependent': 0.19; '>>>': 0.22; 'email addr:gmail.com>': 0.22; 'creating': 0.23; '"you': 0.24; '>>>': 0.24; '31,': 0.24; '>': 0.26; 'this:': 0.26; 'header:In-Reply-To:1': 0.27; 'point': 0.28; 'function': 0.29; 'am,': 0.29; 'points': 0.29; 'message-id:@mail.gmail.com': 0.30; 'skip:( 20': 0.30; 'that.': 0.31; 'cases': 0.33; 'fri,': 0.33; 'totally': 0.33; 'could': 0.34; "can't": 0.35; 'case,': 0.35; 'but': 0.35; 'received:google.com': 0.35; 'to:addr:python- list': 0.38; 'pm,': 0.38; 'anything': 0.39; 'to:addr:python.org': 0.39; 'skip:p 20': 0.39; 'ian': 0.60; 'length': 0.61; 'course': 0.61; "you're": 0.61; 'skip:n 10': 0.64; '30,': 0.65; 'score': 0.74; 'lack': 0.78; 'better!': 0.91; 'subject:True': 0.91 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; bh=bQ0tKCxIQy92GKvBXr1jOEymVVWZTtTVIag1NQb9iDA=; b=tlP2bP61fE+fFOlF8vKhEu4F7VmjhPuz+EKYIDq4Dm4cbw8KbQGlsLy4pUIQPWzEZ6 aQL+G7DOjlU7DWf148jAqhEC85RssJb2Idtp+lntJAFvXStgSq+4fLcc54/dCaH+X+Hw 251Se2VwlFXoVixk/DQLxLGz3f3xmXx+IvmHjqa6YGHu4wp70s5MkBgGgrChLt69To0Z yJkDDnC25gxsUzvPVwU88EboslcVz4oGjqqqFDbLO51EMYAbIY/fAmsvsa6q8mhkF3TT NCGM6lCHk0J6oWznVPOVEYXhW0mZTrDkWsNvVD3KGzfLsWvLbc+sWZ4/8Hi4eZIeA7BU WpFA== MIME-Version: 1.0 X-Received: by 10.66.138.40 with SMTP id qn8mr16973013pab.154.1391116644601; Thu, 30 Jan 2014 13:17:24 -0800 (PST) In-Reply-To: References: <99b0aa22-5fb3-460a-a080-dacb1c0f2fda@googlegroups.com> Date: Thu, 30 Jan 2014 14:17:24 -0700 Subject: Re: 1 > 0 == True -> False From: Ian Kelly To: Python Content-Type: multipart/alternative; boundary=047d7b15a41f71533704f1369521 X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.15 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: 74 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1391117060 news.xs4all.nl 2920 [2001:888:2000:d::a6]:37962 X-Complaints-To: abuse@xs4all.nl Xref: csiph.com comp.lang.python:65050 --047d7b15a41f71533704f1369521 Content-Type: text/plain; charset=ISO-8859-1 On Jan 30, 2014 1:40 PM, "Chris Angelico" wrote: > > On Fri, Jan 31, 2014 at 7:28 AM, Ian Kelly wrote: > > Of course if you're at all concerned about i18n then the proper way to > > do it would be: > > > > ngettext("You have scored %d point", "You have scored %d points", score) % score > > Ugh, so much duplication! We can totally do better than that. > > ngettext(*(lambda x,s: (x,x+'s',s))("You have scored %d point",score)) > > Much better! > > > Incidentally, in creating the above abomination, I found that I can't do this: > > >>> print(*(lambda x: (x,x+'s'))("You have scored %d point"),score) > SyntaxError: only named arguments may follow *expression > > But I can do this: > > >>> print(score,*(lambda x: (x,x+'s'))("You have scored %d point")) > 1 You have scored %d point You have scored %d points > > Why is tuple unpacking limited to the last argument? Is it just for > the parallel with the function definition, where anything following it > is keyword-only? Lack of a convincing use case, and the position of the following arguments would then be dependent upon the length of the tuple, which in many cases could result in subtle bugs. --047d7b15a41f71533704f1369521 Content-Type: text/html; charset=ISO-8859-1


On Jan 30, 2014 1:40 PM, "Chris Angelico" <rosuav@gmail.com> wrote:
>
> On Fri, Jan 31, 2014 at 7:28 AM, Ian Kelly <ian.g.kelly@gmail.com> wrote:
> > Of course if you're at all concerned about i18n then the proper way to
> > do it would be:
> >
> > ngettext("You have scored %d point", "You have scored %d points", score) % score
>
> Ugh, so much duplication! We can totally do better than that.
>
> ngettext(*(lambda x,s: (x,x+'s',s))("You have scored %d point",score))
>
> Much better!
>
>
> Incidentally, in creating the above abomination, I found that I can't do this:
>
> >>> print(*(lambda x: (x,x+'s'))("You have scored %d point"),score)
> SyntaxError: only named arguments may follow *expression
>
> But I can do this:
>
> >>> print(score,*(lambda x: (x,x+'s'))("You have scored %d point"))
> 1 You have scored %d point You have scored %d points
>
> Why is tuple unpacking limited to the last argument? Is it just for
> the parallel with the function definition, where anything following it
> is keyword-only?

Lack of a convincing use case, and the position of the following arguments would then be dependent upon the length of the tuple, which in many cases could result in subtle bugs.

--047d7b15a41f71533704f1369521--