[Python-ideas] Python Isn't Perfect: adding a 'gotchas' section to the tutorial

Ned Batchelder ned at nedbatchelder.com
Mon Dec 12 01:34:07 CET 2011

Richard, I don't think I can provide you with a "why" for dynamic 
typing.  It's a choice Guido made early on, one that is central to the 
language, and one that I think pays off in the long run.  Values are 
objects, which are typed.  Names are untyped, and can refer to any 
value, regardless of what value they referred to in the past.  
Therefore, it doesn't make sense to talk about the type of a name, which 
is all that a type declaration could do.

This is very different than some other programming languages, but I 
don't know if it could be called unintuitive.  I'm not sure anything 
about programming could truly be called intuitive, I think the closest 
we can get is "familiar".  Certainly if you've worked with statically 
typed languages before, then dynamic typing is unfamiliar.

I worry that you are still placing dynamic typing into a category you 
call "gotchas" or "quirks", with the word "fixes" nearby.  Dynamic 
typing cannot be "fixed", it is central to the language.  I think it is 
great to write something to help those new to Python, but you should be 
sure that you fully understand Python before you undertake it.


On 12/11/2011 4:30 PM, Richard Prosser wrote:
> Ned,
> I accept your comment about the tutorial - I wasn't sure about that. 
> Thanks.
> However I still feel that there are some aspects of the language which 
> are not in the true spirit of Python (i.e. 'intuitive').
> The discussion about default mutable types is one of these. It seems 
> to me that the essential problem is that of assignment in general, 
> which (I believe) creates a reference on the LHS to the object on the 
> RHS, rather than having a copy operation to make the two objects 
> completely separate. That can be confusing in other contexts, not just 
> with default parameters.
> If I am to write a 'gotchas' FAQ or whatever then I would like to 
> understand the reasoning behind such design decisions but I can't find 
> any 'deep' explanations at present - just several posts about people 
> being puzzled! A similar comment applies to the lack of type declarations.
> So if you or anyone else can explain exactly why such odditties are 
> implemented I would be grateful.
> Unfortunately it is almost certainly too late to propose fixes (if 
> appropriate) for such quirks in Python 3 but at least I should be able 
> provide arguments as to why things are done the way they are.
> Richard
> On 11 December 2011 01:21, <python-ideas-request at python.org 
> <mailto:python-ideas-request at python.org>> wrote:
>     Message: 2
>     Date: Sat, 10 Dec 2011 13:34:15 -0500
>     From: Ned Batchelder <ned at nedbatchelder.com
>     <mailto:ned at nedbatchelder.com>>
>     To: Richard Prosser <richard.prosser at mail.com
>     <mailto:richard.prosser at mail.com>>
>     Cc: python-ideas at python.org <mailto:python-ideas at python.org>
>     Subject: Re: [Python-ideas] Python Isn't Perfect: adding a 'gotchas'
>            section to the tutorial
>     Message-ID: <4EE3A627.8010002 at nedbatchelder.com
>     <mailto:4EE3A627.8010002 at nedbatchelder.com>>
>     Content-Type: text/plain; charset=ISO-8859-1; format=flowed
>     On 12/10/2011 9:16 AM, Richard Prosser wrote:
>     > Although I love Python there are some aspects of the language design
>     > which are disappointing and which can even lead to problems in
>     some cases.
>     >
>     > A classic example is a mutable default argument having the potential
>     > to produce unexpected side-effects, as a consequence of the
>     > non-intuitive scoping rules.
>     >
>     > Another awkward 'feature' is the requirement for a trailing comma in
>     > singleton tuples, due I believe to the use of expression parentheses
>     > rather than (say) the use of special brackets like chevrons.
>     >
>     > Something that I personally wish for is the ability to declare
>     > variable types 'up front' but that facility is missing from Python.
>     >
>     One of these things is not like the others.  Mutable default
>     arguments,
>     and singleton tuples are surprises that make sense once you understand
>     things on a deeper level.  It makes sense to call them out as a
>     "gotcha": a common stumbling block for learners.  But "no type
>     declarations" is not a wart, it's a fundamental feature of the
>     language
>     that is immediately apparent from the first lesson.
>     --Ned.
> _______________________________________________
> Python-ideas mailing list
> Python-ideas at python.org
> http://mail.python.org/mailman/listinfo/python-ideas
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20111211/335de5cd/attachment.html>

More information about the Python-ideas mailing list