Path: csiph.com!x330-a1.tempe.blueboxinc.net!usenet.pasdenom.info!aioe.org!feeder.news-service.com!newsfeed.xs4all.nl!newsfeed5.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.003 X-Spam-Evidence: '*H*': 0.99; '*S*': 0.00; '(at': 0.03; 'executed': 0.09; 'from:addr:ethan': 0.09; 'from:addr:stoneleaf.us': 0.09; 'from:name:ethan furman': 0.09; 'globals': 0.09; 'message- id:@stoneleaf.us': 0.09; 'received:gator410.hostgator.com': 0.09; 'statement.': 0.09; '~ethan~': 0.09; '"def"': 0.16; '*after*': 0.16; 'received:72.11': 0.16; 'received:72.11.125': 0.16; 'received:72.11.125.166': 0.16; 'cc:addr:python-list': 0.16; 'wrote:': 0.16; 'issue.': 0.19; 'cc:no real name:2**0': 0.20; 'cc:2**0': 0.22; 'header:In-Reply-To:1': 0.22; 'code': 0.25; 'statement': 0.25; 'environment': 0.29; 'cc:addr:python.org': 0.30; 'example': 0.30; 'none,': 0.30; 'ran': 0.30; 'least': 0.31; 'objects': 0.32; 'that,': 0.33; 'header:User-Agent:1': 0.34; 'reasons': 0.37; 'think': 0.38; 'subject:: ': 0.39; 'difficult': 0.39; 'subject:from': 0.40; 'more': 0.60; 'life': 0.63; 'received:websitewelcome.com': 0.64; 'making': 0.67; 'received:184': 0.67; 'locals': 0.84; 'subject:value': 0.84; 'difficult.': 0.91; 'subject:better': 0.93 Date: Tue, 30 Aug 2011 15:31:42 -0700 From: Ethan Furman User-Agent: Thunderbird 1.5.0.10 (Windows/20070221) MIME-Version: 1.0 To: Rob Williscroft Subject: Re: Returning a value from exec or a better solution References: In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - gator410.hostgator.com X-AntiAbuse: Original Domain - python.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - stoneleaf.us X-BWhitelist: no X-Source: X-Source-Args: X-Source-Dir: X-Source-Sender: mail.admailinc.com ([192.168.10.136]) [72.11.125.166]:1469 X-Source-Auth: ethan+stoneleaf.us X-Email-Count: 3 X-Source-Cap: dG9idWs7dG9idWs7Z2F0b3I0MTAuaG9zdGdhdG9yLmNvbQ== Cc: python-list@python.org 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: 18 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1314742485 news.xs4all.nl 2456 [2001:888:2000:d::a6]:56658 X-Complaints-To: abuse@xs4all.nl Xref: x330-a1.tempe.blueboxinc.net comp.lang.python:12455 Rob Williscroft wrote: > Arnaud Delobelle wrote: > >> That's not an issue. The last statement that is executed will be the >> "def" statement. > > You don't know that, an implementation may for example set __bultins__ > to None, prior to returning, its not an unreasonable thing to do and > the docs don't say they can't. Actually, I think it is unreasonable -- by modifying the globals or locals objects *after* the code has been exec'd, information is being removed about the environment the code ran in, making introspection (if nothing else) more difficult. Good reasons are required to make life difficult (at least with Python). ~Ethan~