Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #51718

Oddity with 'yield' as expression - parentheses demanded

Path csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!us.feeder.erje.net!feeder.erje.net!eu.feeder.erje.net!xlned.com!feeder5.xlned.com!newsfeed.xs4all.nl!newsfeed2.news.xs4all.nl!xs4all!newsgate.cistron.nl!newsgate.news.xs4all.nl!post.news.xs4all.nl!not-for-mail
Return-Path <rosuav@gmail.com>
X-Original-To python-list@python.org
Delivered-To python-list@mail.python.org
X-Spam-Status OK 0.003
X-Spam-Evidence '*H*': 0.99; '*S*': 0.00; 'win32': 0.03; 'syntax': 0.04; 'assignment': 0.07; "subject:' ": 0.07; 'omit': 0.09; 'so?': 0.09; 'python': 0.11; 'def': 0.12; 'suggest': 0.14; '"is': 0.16; 'distinct': 0.16; 'expression,': 0.16; 'from:addr:rosuav': 0.16; 'from:name:chris angelico': 0.16; 'lambda': 0.16; 'parentheses': 0.16; 'subject:expression': 0.16; 'subject:yield': 0.16; 'syntaxerror:': 0.16; 'bit': 0.19; '>>>': 0.22; '[1]': 0.29; 'message-id:@mail.gmail.com': 0.30; 'skip:( 20': 0.30; 'sep': 0.31; 'url:python': 0.33; 'subject:with': 0.35; 'received:google.com': 0.35; 'yield': 0.36; 'similar': 0.36; 'url:org': 0.36; 'to:addr:python-list': 0.38; 'does': 0.39; 'to:addr:python.org': 0.39; 'expression': 0.60; 'url:3': 0.61; 'simply': 0.61; 'skip:n 10': 0.64; 'side': 0.67; 'invalid': 0.68; 'sole': 0.78; 'hand': 0.80; 'presumably': 0.84; 'url:reference': 0.84
DKIM-Signature v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=ZXGTNanJBAGMlH0pd/5HMPd4xyu0p++rwOAj59wLtDI=; b=A+hvcIAbAEzuhCOi+Cke/35WlX8BaJ7oOSIxpz3dFP2E15NFZobae6N2XvI2CPV9Sf uQhSBCbSqzEwCFyhu4G6AOluIeYVyRPJkgQqCzc3WV8OPvAmoDxwshAQzt1YSZzG2eCP 90p4ReDApLSoiP206grnDOmuXfZ+0N/mUCxiF2cM87gt1lCnOl3Fam06jJxLtkUlQNfE /3c/WdBHnBKi+RoEgZpXM4Kix9UKQ9+7ac48PhWt/1QI95XeWB1lZKIRjFdQlO8nPgYG xzy/md4Xp8sQ/vYpFYEJPZvPinGQPZYB1PbE9ghQfv0MpAwIsUpDg8Hb4CJQAmeHzhdA ZiLw==
MIME-Version 1.0
X-Received by 10.52.27.207 with SMTP id v15mr5181827vdg.83.1375338355914; Wed, 31 Jul 2013 23:25:55 -0700 (PDT)
Date Thu, 1 Aug 2013 07:25:55 +0100
Subject Oddity with 'yield' as expression - parentheses demanded
From Chris Angelico <rosuav@gmail.com>
To python-list@python.org
Content-Type text/plain; charset=ISO-8859-1
X-BeenThere python-list@python.org
X-Mailman-Version 2.1.15
Precedence list
List-Id General discussion list for the Python programming language <python-list.python.org>
List-Unsubscribe <http://mail.python.org/mailman/options/python-list>, <mailto:python-list-request@python.org?subject=unsubscribe>
List-Archive <http://mail.python.org/pipermail/python-list/>
List-Post <mailto:python-list@python.org>
List-Help <mailto:python-list-request@python.org?subject=help>
List-Subscribe <http://mail.python.org/mailman/listinfo/python-list>, <mailto:python-list-request@python.org?subject=subscribe>
Newsgroups comp.lang.python
Message-ID <mailman.65.1375338358.1251.python-list@python.org> (permalink)
Lines 24
NNTP-Posting-Host 2001:888:2000:d::a6
X-Trace 1375338358 news.xs4all.nl 15870 [2001:888:2000:d::a6]:32866
X-Complaints-To abuse@xs4all.nl
Xref csiph.com comp.lang.python:51718

Show key headers only | View raw


Was playing around with yield inside a lambda and ran into a distinct oddity.

Python 3.3.0 (v3.3.0:bd8afb90ebf2, Sep 29 2012, 10:55:48) [MSC v.1600
32 bit (Intel)] on win32
>>> foo=lambda x: yield(x)
SyntaxError: invalid syntax
>>> def foo(x):
	return yield(x)
SyntaxError: invalid syntax
>>> def foo(x):
	x=yield(x)
	return x
>>> foo=lambda x: (yield x)

If yield is an expression, why does it need extra parentheses around
it? [1] suggest that "(yield x)" is an expression that can elide the
parens only when it "is the sole expression on the right hand side of
an assignment statement", and presumably there's a similar rule
allowing the non-expression form "yield x" to omit the parens. Why is
this so? Why is it not simply an expression on its own?

[1] http://docs.python.org/3.3/reference/expressions.html#grammar-token-yield_expression

ChrisA

Back to comp.lang.python | Previous | Next | Find similar | Unroll thread


Thread

Oddity with 'yield' as expression - parentheses demanded Chris Angelico <rosuav@gmail.com> - 2013-08-01 07:25 +0100

csiph-web