Path: csiph.com!usenet.pasdenom.info!goblin3!goblin2!goblin.stu.neva.ru!newsfeed1.swip.net!uio.no!news.tele.dk!news.tele.dk!small.news.tele.dk!newsgate.cistron.nl!newsgate.news.xs4all.nl!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; 'syntax': 0.04; 'tree': 0.05; 'explicit': 0.07; 'tom': 0.07; 'variables': 0.07; 'classes.': 0.09; 'methods,': 0.09; 'subject:design': 0.09; 'type,': 0.09; 'cc:addr:python-list': 0.11; 'python': 0.11; 'wrote': 0.14; '(modulo': 0.16; '11:09': 0.16; 'declarations': 0.16; 'detected': 0.16; 'dynamic,': 0.16; 'gotcha.': 0.16; 'mutable': 0.16; 'new-style': 0.16; 'reliably': 0.16; 'sins': 0.16; 'subject:Language': 0.16; 'to:addr:pearwood.info': 0.16; "to:name:steven d'aprano": 0.16; 'typos': 0.16; 'unnecessary.': 0.16; 'wrote:': 0.18; 'variable': 0.18; 'rules': 0.22; 'cc:addr:python.org': 0.22; 'skip:` 20': 0.24; 'mon,': 0.24; 'cheers,': 0.24; 'cc:2**0': 0.24; 'least': 0.26; 'defined': 0.27; 'header:In-Reply-To:1': 0.27; 'function': 0.29; 'chris': 0.29; 'resolution': 0.29; "doesn't": 0.30; 'statement': 0.30; 'message- id:@mail.gmail.com': 0.30; 'url:mailman': 0.30; 'included': 0.31; 'anonymous': 0.31; "d'aprano": 0.31; 'operators': 0.31; 'sep': 0.31; 'steven': 0.31; 'regular': 0.32; 'up.': 0.33; 'url:python': 0.33; '(e.g.': 0.33; 'problem': 0.35; "can't": 0.35; 'but': 0.35; 'received:google.com': 0.35; 'there': 0.35; 'url:listinfo': 0.36; 'method': 0.36; 'url:org': 0.36; 'pm,': 0.38; 'rather': 0.38; 'anything': 0.39; 'bad': 0.39; 'url:mail': 0.40; 'ago,': 0.61; 'new': 0.61; 'name': 0.63; 'kind': 0.63; 'within': 0.65; 'here': 0.66; 'optimized': 0.68; 'default': 0.69; 'introduce': 0.78; 'hardly': 0.84; 'mistakes,': 0.84; 'sender:addr:chris': 0.84; 'started,': 0.84; 'thing,': 0.91; '2013': 0.98 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rebertia.com; s=google; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:cc:content-type; bh=kw2cE9J9BgVkNvKt7kkfMUryM7O05slgMYsHEogi8Kg=; b=EyiuZFLG3c1rlSv/2mfJdROnnbM+T+mNnukIO6EjeYwMELU7yayIp3F0nhS5GQhfD9 qgwdDB2kF1zYfzsyjRwT+OnrVl85cJ/5VhPP2ASkgcdXUaPZzXG7V32PSHzwkeLZBoWJ okGLKnQAxLEaqeorvYuS/EK7xccuRHJYef+D8= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:sender:in-reply-to:references:date :message-id:subject:from:to:cc:content-type; bh=kw2cE9J9BgVkNvKt7kkfMUryM7O05slgMYsHEogi8Kg=; b=MgZ0jAEnoV3G30Qi/AHiBm0sQAMs7yQnlzN0Vlwf+8ytnt5BwTbN2kg0TYlHncAD1V fBWf18cYPCPUyMT0ZUfJQ3Q8nYlcFMmjqxNoBKcxRu24RmDWmX77NLwzPEne/SQ4O6rT 2MjyKJMclZW6MSp4qDUEFDBcLEFUN2tGcNKZHe4xNZ/PHHaFSdYXZX48CzLJ15xdgky+ iCw9OfBrOdiqIK+RRmh1j0Cr1XZWXvFHlor3US12wQxwZoffWAHs84Jgd/L5y4/xFNx6 zbQkfwX1C/Fsy8oWdmF7RCEr7rbLnVWVeILvxbOC8pGMYJZNowdKcQv0Hf6R2i2UhoBQ RI4A== X-Gm-Message-State: ALoCoQktMnCrnGSl5NMzAGJyxsSgQAtXBWZxin/TaOaxVc2ZyQ/EVdPD8d8WdKwXRZAxiHvWwMO5 MIME-Version: 1.0 X-Received: by 10.50.103.3 with SMTP id fs3mr11533888igb.39.1378863960806; Tue, 10 Sep 2013 18:46:00 -0700 (PDT) Sender: chris@rebertia.com In-Reply-To: <522eb795$0$29999$c3e8da3$5496439d@news.astraweb.com> References: <522eb795$0$29999$c3e8da3$5496439d@news.astraweb.com> Date: Tue, 10 Sep 2013 18:46:00 -0700 X-Google-Sender-Auth: zj6d0lEfUlsfRquyTmnsd48P4C4 Subject: Re: Language design From: Chris Rebert To: "Steven D'Aprano" Content-Type: text/plain; charset=UTF-8 Cc: Python 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: 45 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1378863964 news.xs4all.nl 15866 [2001:888:2000:d::a6]:47912 X-Complaints-To: abuse@xs4all.nl Xref: csiph.com comp.lang.python:53936 * No explicit variable declarations (modulo `global`+`nonlocal`) means that variable name typos can't be reliably detected at compile-time. * The value of the loop variable at call-time for functions defined within a loop trips people up. * No self-balancing tree datatype of any kind is included in the std lib. * Function scope rather than block scope (e.g. `while` doesn't introduce a new scope) [Personally, I don't have much of a problem with this, but some people do.] * No anonymous block syntax (cf. Ruby or Smalltalk). Makes it harder/uglier to define/use custom control structures. The `with` statement would have been unnecessary. Cheers, Chris On Mon, Sep 9, 2013 at 11:09 PM, Steven D'Aprano wrote: > Some time ago, Tom Christiansen wrote about the "Seven Deadly Sins of > Perl": > > http://www.perl.com/doc/FMTEYEWTK/versus/perl.html > > > What design mistakes, traps or gotchas do you think Python has? Gotchas > are not necessarily a bad thing, there may be good reasons for it, but > they're surprising. > > To get started, here are a couple of mine: > > > - Python is so dynamic, that there is hardly anything at all that can be > optimized at compile time. > > - The behaviour of mutable default variables is a gotcha. > > - Operators that call dunder methods like __add__ don't use the same > method resolution rules as regular methods, they bypass the instance and > go straight to the type, at least for new-style classes. > > > > -- > Steven > -- > https://mail.python.org/mailman/listinfo/python-list