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


Groups > comp.lang.python > #8349

Re: Interpreting Left to right?

Path csiph.com!x330-a1.tempe.blueboxinc.net!usenet.pasdenom.info!selfless.tophat.at!newsfeed.xs4all.nl!newsfeed5.news.xs4all.nl!xs4all!post.news.xs4all.nl!not-for-mail
Return-Path <python-python-list@m.gmane.org>
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; 'example:': 0.03; 'operator': 0.05; 'raises': 0.07; 'terry': 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; 'tuple': 0.09; 'am,': 0.13; 'wrote:': 0.15; '2))': 0.16; 'bytecode': 0.16; 'comma': 0.16; 'evaluates': 0.16; 'int)': 0.16; 'interprets': 0.16; 'parentheses': 0.16; 'parsed': 0.16; 'precedence.': 0.16; 'reedy': 0.16; '>>>': 0.16; 'jan': 0.19; 'header:In-Reply-To:1': 0.22; 'pair': 0.23; 'right.': 0.28; 'import': 0.29; 'combination': 0.29; 'expressions': 0.29; 'tuples': 0.30; 'subject:?': 0.31; 'shows': 0.32; 'expression': 0.32; 'header:User-Agent:1': 0.34; 'header:X-Complaints-To:1': 0.34; 'instead': 0.34; 'to:addr :python-list': 0.34; 'be.': 0.34; 'doc': 0.35; 'here,': 0.35; 'but': 0.37; 'another': 0.38; 'received:org': 0.38; 'subject:: ': 0.38; 'should': 0.39; 'header:Mime-Version:1': 0.39; 'to:addr:python.org': 0.39; 'your': 0.61; 'order': 0.62; '(3)': 0.63; 'facts': 0.64; 'here': 0.66; '"can': 0.84; '12:32': 0.84; 'concatenate': 0.84
X-Injected-Via-Gmane http://gmane.org/
To python-list@python.org
From Terry Reedy <tjreedy@udel.edu>
Subject Re: Interpreting Left to right?
Date Fri, 24 Jun 2011 02:20:11 -0400
References <BANLkTimcPAjQP4JJk=OAbrkLFfd2AtndwQ@mail.gmail.com>
Mime-Version 1.0
Content-Type text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding 7bit
X-Gmane-NNTP-Posting-Host rain.gmane.org
User-Agent Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.18) Gecko/20110616 Lightning/1.0b2 Thunderbird/3.1.11
In-Reply-To <BANLkTimcPAjQP4JJk=OAbrkLFfd2AtndwQ@mail.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 <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.352.1308896423.1164.python-list@python.org> (permalink)
Lines 33
NNTP-Posting-Host 82.94.164.166
X-Trace 1308896423 news.xs4all.nl 14144 [::ffff:82.94.164.166]:50375
X-Complaints-To abuse@xs4all.nl
Xref x330-a1.tempe.blueboxinc.net comp.lang.python:8349

Show key headers only | View raw


On 6/24/2011 12:32 AM, Chetan Harjani wrote:
> x=y="some string"
> And we know that python interprets from left to right.

Read the doc. "5.14. Evaluation order
Python evaluates expressions from left to right. Notice that while 
evaluating an assignment, the right-hand side is evaluated before the 
left-hand side."

> another example:
> (1,2) + 3,
> here, python raises a  TypeError "can only concatenate tuple(not int) to
> tuple" but we know (3,) is a tuple as seen by following:

But "(3,) is not what you wrote;-). The comma operator has the lowest 
precedence, although this is not as clear in the doc as it should be. 
Your expression is parsed as ((1,2)+3),. Parentheses have the highest 
precedence. The combination of both facts is why tuples often need to be 
parenthesized, as it should be here and why you added the first pair 
instead of writing 1,2 + 3,.

Disassembly of bytecode shows how an expression was parsed.
 >>> from dis import dis
 >>> dis('(1,2)+3,')
   1           0 LOAD_CONST               3 ((1, 2))
               3 LOAD_CONST               2 (3)
               6 BINARY_ADD
               7 BUILD_TUPLE              1
              10 RETURN_VALUE

-- 
Terry Jan Reedy

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


Thread

Re: Interpreting Left to right? Terry Reedy <tjreedy@udel.edu> - 2011-06-24 02:20 -0400

csiph-web