Path: csiph.com!fu-berlin.de!uni-berlin.de!not-for-mail From: Mark Lawrence Newsgroups: comp.lang.python Subject: Re: The Cost of Dynamism (was Re: Pyhon 2.x or 3.x, which is faster?) Date: Thu, 24 Mar 2016 01:12:32 +0000 Lines: 47 Message-ID: References: <56e44258$0$1598$c3e8da3$5496439d@news.astraweb.com> <8737rvxs89.fsf@elektro.pacujo.net> <56e7483d$0$1608$c3e8da3$5496439d@news.astraweb.com> <56ef9787$0$1516$c3e8da3$5496439d@news.astraweb.com> <56f02196$0$1588$c3e8da3$5496439d@news.astraweb.com> <56f32cff$0$1602$c3e8da3$5496439d@news.astraweb.com> Mime-Version: 1.0 Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-Trace: news.uni-berlin.de 5Wm5y9cf8yDuVLOCWnB0CAks/dbh77F1+oYP1RODDFaw== 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; 'from:addr:yahoo.co.uk': 0.05; 'received:80.91': 0.09; 'received:80.91.229': 0.09; 'received:gmane.org': 0.09; 'received:list': 0.09; 'splitting': 0.09; 'subject:which': 0.09; 'python': 0.10; 'wed,': 0.15; 'instead.': 0.15; 'thu,': 0.15; '"your': 0.16; '(something': 0.16; '2016': 0.16; '23,': 0.16; 'character).': 0.16; 'code?': 0.16; 'pythonic': 0.16; 'received:194.126': 0.16; 'received:80.91.229.3': 0.16; 'received:io': 0.16; 'received:plane.gmane.org': 0.16; 'received:psf.io': 0.16; 'started:': 0.16; 'subject:?)': 0.16; 'wrote:': 0.16; 'string': 0.17; 'duplicate': 0.18; 'language': 0.19; '>>>': 0.20; 'suggested': 0.20; 'not,': 0.22; 'lawrence': 0.22; 'am,': 0.23; '(where': 0.23; 'passing': 0.23; 'header:In-Reply-To:1': 0.24; 'header:User-Agent:1': 0.26; 'header:X-Complaints-To:1': 0.26; 'rest': 0.26; 'earlier': 0.27; 'correct': 0.28; "skip:' 10": 0.28; 'tail': 0.29; 'thinks': 0.29; 'character': 0.29; "i'm": 0.30; 'code': 0.30; 'somebody': 0.30; 'language.': 0.32; 'source': 0.33; "d'aprano": 0.33; "he's": 0.33; 'steven': 0.33; 'skip:d 20': 0.34; 'behind': 0.35; 'could': 0.35; 'but': 0.36; "wasn't": 0.36; 'to:addr:python-list': 0.36; 'subject:: ': 0.37; 'say': 0.37; 'received:org': 0.37; 'doing': 0.38; 'anything': 0.38; 'why': 0.39; 'goes': 0.39; 'sure': 0.39; 'along': 0.39; 'to:addr:python.org': 0.40; 'where': 0.40; 'mark': 0.40; 'ever': 0.60; 'subject:The': 0.61; 'entire': 0.61; 'eye': 0.61; 'received:194': 0.61; 'charset:windows-1252': 0.62; 'our': 0.64; 'mar': 0.65; 'respect': 0.65; 'here': 0.66; 'proves': 0.84; 'pythonistas,': 0.84; 'dennis': 0.91 X-Injected-Via-Gmane: http://gmane.org/ X-Gmane-NNTP-Posting-Host: 248.80.126.194.pool.dsl.daisyplc.net User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.7.0 In-Reply-To: <56f32cff$0$1602$c3e8da3$5496439d@news.astraweb.com> X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: General discussion list for the Python programming language List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Xref: csiph.com comp.lang.python:105580 On 23/03/2016 23:55, Steven D'Aprano wrote: > On Thu, 24 Mar 2016 03:24 am, Random832 wrote: > >> On Wed, Mar 23, 2016, at 12:08, Mark Lawrence wrote: >>>> And doing it 'Pythonically' can lead to suggestions such as the >>>> following the other day: >>>> >>>> c, psource = psource[0], psource[1:] >>>> >>>> (where psource is a very long string), which even I could tell, from >>>> knowing what goes on behind the scenes, wasn't going to work well >>>> (duplicating the rest of the string roughly every other character). >>>> >>> >>> It would work perfectly. How would it duplicate the rest of the string >>> roughly every other character? >> >> Er, I think he's suggesting that this would be in an inner loop >> (something like while psource: c, psource = psource[0], psource[1:]). >> What I'm not sure of is why he thinks this is pythonic. > > Because somebody here (Dennis) criticised his earlier code for passing "your > entire source string along with the character from it to the function", and > suggested splitting the string into its head and tail instead. Dennis' code > started: > > while psource: > c, psource = psource[0], psource[1:] > lxsymbol = disptable[min(ord(c), 256)](c, psource) > > > But one positive: this conclusively proves that "Pythonic" is in the eye of > the beholder. Dennis thinks that c, psource = psource[0], psource[1:] is > reasonable Python code; you think it's not ("I'm not sure why [Bart] thinks > this is pythonic"). > > Pythonic or not, Bart is correct to be concerned about the performance, Where and when did he ever say anything about performance with respect to the above piece of code? -- My fellow Pythonistas, ask not what our language can do for you, ask what you can do for our language. Mark Lawrence