Path: csiph.com!usenet.pasdenom.info!weretis.net!feeder4.news.weretis.net!rt.uk.eu.org!newsfeed.xs4all.nl!newsfeed1.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.002 X-Spam-Evidence: '*H*': 1.00; '*S*': 0.00; 'programmer': 0.03; 'languages.': 0.04; 'argument': 0.05; 'mrab': 0.05; '21,': 0.07; 'pypi': 0.07; 'arguments': 0.09; 'arguments,': 0.09; 'fixed,': 0.09; 'friday,': 0.09; 'happen.': 0.09; 'propagate': 0.09; "they've": 0.09; 'contribute': 0.11; 'python': 0.11; 'language,': 0.12; 'language.': 0.14; '"python': 0.16; '_do_': 0.16; 'backwards': 0.16; 'ball.': 0.16; 'devs': 0.16; 'does,': 0.16; 'from:addr:mrabarnett.plus.com': 0.16; 'from:addr:python': 0.16; 'from:name:mrab': 0.16; 'ha!': 0.16; 'message- id:@mrabarnett.plus.com': 0.16; 'mutability': 0.16; 'mutable': 0.16; 'perfect.': 0.16; 'received:84.93': 0.16; 'received:84.93.230': 0.16; 'successive': 0.16; 'troll': 0.16; 'language': 0.16; 'fix': 0.17; 'wrote:': 0.18; 'code.': 0.18; 'module': 0.19; 'else,': 0.19; 'passing': 0.19; "python's": 0.19; '(in': 0.22; 'print': 0.22; 'header:User-Agent:1': 0.23; 'finally,': 0.24; 'sorry,': 0.24; 'sort': 0.25; 'source': 0.25; 'developers': 0.25; 'mention': 0.26; 'possibly': 0.26; 'query': 0.26; 'developing': 0.27; 'header:In-Reply-To:1': 0.27; 'points': 0.29; '???': 0.30; "i'm": 0.30; 'idea,': 0.31; 'omitted': 0.31; 'way?': 0.31; 'me?': 0.32; "we're": 0.32; '(including': 0.33; 'worked': 0.33; 'everyone': 0.33; 'entirely': 0.33; 'not.': 0.33; 'plain': 0.33; 'position.': 0.33; 'proceed': 0.33; 'core': 0.34; 'message.': 0.35; 'johnson': 0.35; 'received:84': 0.35; 'but': 0.35; 'there': 0.35; 'done': 0.36; 'doing': 0.36; "didn't": 0.36; 'should': 0.36; 'detail': 0.37; 'so,': 0.37; 'list': 0.37; 'desirable': 0.38; 'to:addr:python-list': 0.38; 'fact': 0.38; 'that,': 0.38; 'little': 0.38; 'does': 0.39; 'bad': 0.39; 'realize': 0.39; 'to:addr:python.org': 0.39; 'how': 0.40; 'even': 0.60; 'truly': 0.60; 'tell': 0.60; 'hope': 0.61; 'free': 0.61; 'entire': 0.61; 'matter': 0.61; "you're": 0.61; 'first': 0.61; 'offer': 0.62; "you've": 0.63; 'developed': 0.63; 'protection': 0.63; 'personal': 0.63; 'such': 0.63; 'choose': 0.64; 'provide': 0.64; 'more': 0.64; 'assistance': 0.66; 'worth': 0.66; 'between': 0.67; 'determine': 0.67; 'header:Reply-To:1': 0.67; 'believe': 0.68; 'detail.': 0.68; 'default': 0.69; 'saving': 0.69; 'reply- to:no real name:2**0': 0.71; 'honest': 0.78; 'gain': 0.79; 'happen!': 0.84; 'perceive': 0.84; 'reply-to:addr:python.org': 0.84; 'subject:Value': 0.84; 'rick': 0.93; '2013': 0.98 X-CM-Score: 0.00 X-CNFS-Analysis: v=2.1 cv=RZapVTdv c=1 sm=1 tr=0 a=0nF1XD0wxitMEM03M9B4ZQ==:117 a=0nF1XD0wxitMEM03M9B4ZQ==:17 a=0Bzu9jTXAAAA:8 a=oyR3mlnJdzkA:10 a=ihvODaAuJD4A:10 a=OUOv7kDek9cA:10 a=8nJEP1OIZ-IA:10 a=EBOSESyhAAAA:8 a=8AHkEIZyAAAA:8 a=Mpz3XJYojt8A:10 a=37EMV9BpPZCf5neIcFAA:9 a=Zc010wvHLd2I1iMI:21 a=APR64e4xlIaroERh:21 a=wPNLvfGTeEIA:10 X-AUTH: mrabarnett:2500 Date: Sat, 22 Jun 2013 02:54:50 +0100 From: MRAB User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:17.0) Gecko/20130509 Thunderbird/17.0.6 MIME-Version: 1.0 To: python-list@python.org Subject: Re: Default Value References: <7e6361d5-6619-4aaa-adda-8b5f01bde57f@googlegroups.com> <447dd1c6-1bb2-4276-a109-78d7a067b442@d8g2000pbe.googlegroups.com> <2e92b4c7-31be-40d2-a906-ab19f3630dfa@googlegroups.com> <51c477dd$0$29999$c3e8da3$5496439d@news.astraweb.com> <565a1c8f-6fd9-4bab-9834-076eaea527f8@googlegroups.com> <7e1ed740-df18-4978-b11d-8ca9c4b5bd04@googlegroups.com> <03e9544e-9d6d-4155-a793-56f0c22c7f7a@googlegroups.com> <8320acf5-3a9d-42c4-a9f6-c9623add078c@googlegroups.com> In-Reply-To: <8320acf5-3a9d-42c4-a9f6-c9623add078c@googlegroups.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.15 Precedence: list Reply-To: python-list@python.org 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: 84 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1371866091 news.xs4all.nl 15926 [2001:888:2000:d::a6]:32936 X-Complaints-To: abuse@xs4all.nl Xref: csiph.com comp.lang.python:48903 On 22/06/2013 00:51, Rick Johnson wrote: > On Friday, June 21, 2013 5:49:51 PM UTC-5, MRAB wrote: >> I notice that you've omitted any mention of how you'd know that the >> argument was mutable. > > My argument has always been that mutables should not be > passed into subroutines as default arguments because bad > things can happen. And Python's excuse of saving the poor > dummies is no excuse. > > It does not matter if we are passing the arguments into the > current implementation of "python functions which maintain > state of default mutables arguments between successive > calls" or in a more desirable system of truly "stateless > subroutines". > > I also believe that a programmer should not be prevented > from passing mutable default arguments, but if he does, I'm > not going to provide any sort of protection -- other than > possibly throwing up a warning message. > So, having mutables as default arguments is a bad idea, but a programmer should not be prevented from doing that, and a warning message should be printed on such occasions. > Now, YOU, and everyone else, cannot destroy the main points > of my argument because the points are in fact rock solid, > however, what you will do is to focus in one small detail, > one little tiny (perceived) weakness in the armor, and you > will proceed to destroy that small detail (in this case how > i will determine mutability), and hope that the destruction > of this insignificant detail will start a chain-reaction > that will propagate out and bring down my entire position. > In order to print a warning, Python needs to know whether the object is mutable, so it's an important detail. > So you want me to tell you how to query the mutability of an > object... Ha Ha Ha! Sorry, but that's not going to happen! > It's a detail that you're not going to help to solve. > Why should i help the developers of this language. What have > they done for me? > They've developed this language, and provided it for free. They've even released the source code. You perceive flaws that you say must be fixed, but you're not going to help to fix them. > WOULD YOU OFFER ASSISTANCE TO PEOPLE THAT HAVE TREATED YOU THIS WAY? > > And let's just be honest. You don't want my assistance. You > just want me to fumble the ball. Then you can use that > fumble as an excuse to write me off. Nice try! > I _do_ want you to help to improve the language, and I don't care if you don't get it right first time. I didn't get it right first time when I worked on the regex module (I think that what I have on PyPI is my _third_ attempt!). > You want to gain my respect? Then start engaging in honest > debates. Start admitting that yes, somethings about Python > are not only undesirable, they're just plain wrong. > Python isn't perfect, but then no language is perfect. There will always be compromises, and the need to maintain backwards compatibility means that we're stuck with some "mis-features", but I think it's still worth using; I still much prefer it to other languages. > Stop calling me a troll when i am not. And not just me, stop > calling other people trolls too! Stop using the personal > attacks and straw man arguments. > ??? > Finally, get the core devs to realize that this list matters > and they need to participate (including you know who!) > Everyone is a volunteer. The core devs contribute by developing the language, and whether they participate in this particular list is entirely up to them; how they choose to spend _their own_ free time is, again, entirely up to them.