Path: csiph.com!fu-berlin.de!uni-berlin.de!not-for-mail From: Antoon Pardon Newsgroups: comp.lang.python Subject: Re: What is a function parameter =[] for? Date: Tue, 24 Nov 2015 16:01:34 +0100 Lines: 32 Message-ID: References: <564dbe6b$0$1610$c3e8da3$5496439d@news.astraweb.com> <564df258$0$1604$c3e8da3$5496439d@news.astraweb.com> <8601c9af-a7d9-4642-ba1c-8edd1e4c3390@googlegroups.com> <56546985.8060704@rece.vub.ac.be> <56547337.4000709@rece.vub.ac.be> Mime-Version: 1.0 Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit X-Trace: news.uni-berlin.de iJeWCpCZRzpDnj6Fln+RNAA+FoSl3qeRO3PQXTPvBn1Q== 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; 'cpython': 0.05; 'constructor': 0.07; 'expressions': 0.07; 'squares': 0.07; 'immutable': 0.09; 'literal': 0.09; 'tuple': 0.09; 'question.': 0.13; 'do,': 0.15; 'wed,': 0.15; 'constants': 0.16; 'constructor.': 0.16; 'folding': 0.16; 'literal,': 0.16; 'literals': 0.16; 'received:adsl-dyn.isp.belgacom.be': 0.16; 'received:io': 0.16; 'received:psf.io': 0.16; 'wrote:': 0.16; '(in': 0.18; '>>>': 0.20; '2015': 0.20; 'constant': 0.22; 'tuples': 0.22; 'am,': 0.23; 'this:': 0.23; 'header:In-Reply- To:1': 0.24; 'header:User-Agent:1': 0.26; "doesn't": 0.26; 'example': 0.26; 'chris': 0.26; 'function': 0.28; 'looks': 0.29; 'received:192.168.1.3': 0.29; 'received:be': 0.30; 'generally': 0.32; 'though.': 0.33; 'that,': 0.34; 'involving': 0.35; 'nov': 0.35; "isn't": 0.35; 'but': 0.36; 'to:addr:python-list': 0.36; 'subject:?': 0.36; 'subject:: ': 0.37; 'one,': 0.37; 'list.': 0.37; 'does': 0.39; 'received:192': 0.39; 'rather': 0.39; 'to:addr:python.org': 0.40; 'still': 0.40; 'your': 0.60; "you'll": 0.61; 'charset:windows-1252': 0.62; 'angelico:': 0.84; 'chrisa': 0.84; 'confusion.': 0.84; 'pardon': 0.84; 'received:195.238': 0.84; 'schreef': 0.84; 'yours': 0.89 X-Belgacom-Dynamic: yes X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A2CWAQBAe1RW/9Xi9VENUYR9wRuGDwKBdhABAQEBAQEBhT8BAQR4EQsYCRYPCQMCAQIBRRMGAgKIL61LjHqEJgEBCAIBIIZUhH6FJ4QSAQSWUI0xgVuWfoNyOIQwcQGFKgEBAQ User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Icedove/31.8.0 In-Reply-To: X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.20+ 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:99350 Op 24-11-15 om 15:34 schreef Chris Angelico: > On Wed, Nov 25, 2015 at 1:24 AM, Antoon Pardon > wrote: >>> Start thinking of it as a constructor call rather than a literal, and >>> you'll get past most of the confusion. >> >> That doesn't change the fact it does look like a literal and not like >> a constructor. > > Then explain how this is a literal: > > squares = [x*x for x in range(int(input("How far? ")))] > > Or even a simple example like this: > > coords = (randrange(10), randrange(10)) > > Neither of them is a literal, even though one of them isn't even > constructing a list. Tuples may be constant, but they still don't have > a literal form. (Constant folding can make them function the same way > literals do, though. If a tuple is constructed of nothing but > immutable constants - including an empty tuple - then CPython will > generally create a constant for the whole tuple and use that, rather > than manually constructing one every time. But the same is true of > other expressions involving nothing but constants.) > > So if it (in your opinion) looks like a literal but isn't one, whose > fault is it? Yours or the language's? Not a rhetorical question. > > ChrisA >