Path: csiph.com!usenet.pasdenom.info!aioe.org!news.stack.nl!newsfeed.xs4all.nl!newsfeed3.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.001 X-Spam-Evidence: '*H*': 1.00; '*S*': 0.00; 'languages,': 0.04; 'explicit': 0.07; '"if': 0.09; "'return": 0.09; '__name__': 0.09; 'executed': 0.09; 'executes': 0.09; 'implemented.': 0.09; 'received:80.91': 0.09; 'received:80.91.229': 0.09; 'received:gmane.org': 0.09; 'received:list': 0.09; 'subject:How': 0.10; 'python': 0.11; 'jan': 0.12; "'__main__':": 0.16; '(which,': 0.16; 'decade,': 0.16; 'exactly,': 0.16; 'hides': 0.16; 'how,': 0.16; 'invocation': 0.16; 'merely': 0.16; 'namespace,': 0.16; 'pythonic': 0.16; 'received:80.91.229.3': 0.16; 'received:plane.gmane.org': 0.16; 'reedy': 0.16; 'simplest': 0.16; 'such,': 0.16; 'wrote:': 0.18; 'discussion': 0.18; 'module': 0.19; "python's": 0.19; 'programming': 0.22; 'header:User-Agent:1': 0.23; 'string,': 0.24; "haven't": 0.24; "i've": 0.25; 'header:X -Complaints-To:1': 0.27; 'header:In-Reply-To:1': 0.27; 'function': 0.29; "i'm": 0.30; 'idea,': 0.31; 'implicit': 0.31; 'proposing': 0.31; 'subject:some': 0.31; 'worked': 0.33; 'but': 0.35; 'should': 0.36; 'too': 0.37; 'two': 0.37; 'being': 0.38; 'ends': 0.38; 'to:addr:python-list': 0.38; 'pm,': 0.38; 'to:addr:python.org': 0.39; 'received:org': 0.40; 'even': 0.60; 'details.': 0.61; 'john': 0.61; 'name': 0.63; 'myself': 0.63; 'become': 0.64; 'determine': 0.67; 'bothered': 0.68; 'deeply': 0.69; 'end.': 0.84; 'idiom': 0.84; 'received:fios.verizon.net': 0.84; 'magical': 0.91; 'received:108': 0.93; 'students,': 0.95; 'taught': 0.96; 'invite': 0.98 X-Injected-Via-Gmane: http://gmane.org/ To: python-list@python.org From: Terry Reedy Subject: Re: How about some syntactic sugar for " __name__ == '__main__' "? Date: Wed, 12 Nov 2014 18:19:53 -0500 References: <71b9a111-283f-4006-bc9d-e35782d9888c@googlegroups.com> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Gmane-NNTP-Posting-Host: pool-108-16-203-145.phlapa.fios.verizon.net User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Thunderbird/24.6.0 In-Reply-To: <71b9a111-283f-4006-bc9d-e35782d9888c@googlegroups.com> 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: 32 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1415834417 news.xs4all.nl 2959 [2001:888:2000:d::a6]:47018 X-Complaints-To: abuse@xs4all.nl Xref: csiph.com comp.lang.python:80658 On 11/12/2014 4:02 PM, John Ladasky wrote: > I have taught Python to several students over the past few years. As > I have worked with my students, I find myself bothered by the > programming idiom that we use to determine whether a module is being > executed or merely imported: > > "if __name__ == '__main__':" > > The use of two dunder tokens -- one as a name in a namespace, and the > other as a string, is intimidating. It exposes too much of Python's > guts. As such, I think that it is less Pythonic than we might want. > Myself, I've been programming in Python for a decade, and I still > haven't dug very deeply into what exactly __name__ means or does. > > I would like to start a discussion about whether Python should > include a function which executes this evaluation, and hides all of > the unfriendly dunderish details. And if that's a good idea, I would > invite a discussion of how, exactly, it should be implemented. I'm > nowhere near proposing a PEP, but that may come later. Functions have an implicit 'return None' at the end (which, in CPython, become an explicit pair of bytecodes, even when the function already ends with return something'. The simplest proposal is that modules have an implicit "if __name__ == '__main__': main()" at the end. I think this would not have to be added to the bytecode. This magical invocation mimics C and some other languages, and I think it works well. -- Terry Jan Reedy