[Python-Dev] complaints..

Guido van Rossum guido at python.org
Sun Jan 13 18:31:58 CET 2008


It would make more sense to redirect "criticism" out of beginners'
ignorance to comp.lang.python rather than spend time discussing their
misunderstandings here.

On Jan 13, 2008 9:28 AM, Georg Brandl <g.brandl at gmx.net> wrote:
> Jay schrieb:
>
> Only addressing the easier points here:
>
> > #----------------------------------------------------------
> > # flaw #2
> > #
> > # In functions, reads are scoped. Writes are not.
> > #
> >
> > A = "1"
> >
> > def F1():
> >     A = "2" # not an error
> >
> > def F2():
> >     #B = A # error
> >     A = "3"
> >
> > F1()
> > F2()
> > print(A)
>
> "Writes" creates a new local. If you want to modify the enclosing
> binding, the new "nonlocal" statement in 2.6/3.0 will enable that.
>
> > #----------------------------------------------------------
> > # flaw #3:
> > #  lambda is neutered
> > #  It allows just one expression, and no statements
>
> Lambda can't be altered to allow statements *and* have a consistent
> indentation-based syntax.
>
> > #----------------------------------------------------------
> > # flaw #5
> > #
> > # for loops suck
> > #
> > # It should be easy to iterate from 0 to n, not 0 to n - 1,
> > # thereby knowing why the loop terminated
> > #
> >
> > #This should work:
> >
> > # print the first even number, if there are any
> >
> > A = [1, 3]
> > for i in range(0, len(A)):
> >     if ((A[i] % 2) == 0):
> >         print("even number found")
> >         break;
> > if (i == len(A)):
> >     print("no even numbers found")
>
> The for loop has an else clause.
>
> for x in A:
>      if x % 2 == 0:
>          print "even number found"
>          break
> else:
>      print "no even numbers found"
>
> > Flaw #6
> >
> > The docs are very good.
> >
> > However the reference doesn't give much in the way
> > of semantic description.
> >
> > It is surprising that an experienced programmer MUST
> > depend on the tutorial or any examples or semantics.
> > Light on examples, ok for reference.
> >
> > The language reference is little more than the grammar in parts.
> >
> > There needs to be links from the reference back to the tutorial.
> >
> > Perhaps merge the indices for Tutorial, Language Reference, Library
> > Reference.
> > Or maybe that's what search is for.
>
> Look at the new docs for 2.6 -- there's many more references in it.
> http://docs.python.org/dev
>
> > #----------------------------------------------------------
> > # Flaw #7
> > #
> > # This is a compatibility issue.
> > # print is both a statement and a function, or something..
> > #
> >
> > print() # should print just a newline, but prints two parens
> >
> > # workaround:
> >
> > print("")
>
> print is a statement, and no function. () is an empty tuple, so
> "print ()" prints an empty tuple.
> (""), on the other hand, is the same as "".
>
> > #----------------------------------------------------------
> > # flaw #8
> > #
> > # Having to eval expressions but exec statements feels wrong.
> > # There should just be eval.
> > #
> >
> > # eval("print(1)") # error
> > exec("print(1)") # not an error
> >
> > exec("1 + 2") # not an error?
> > eval("1 + 2") # not an error
>
> There's a clear distinction between expressions and statements,
> so it makes sense here too.
>
> cheers,
> Georg
>
> --
> Thus spake the Lord: Thou shalt indent with four spaces. No more, no less.
> Four shall be the number of spaces thou shalt indent, and the number of thy
> indenting shall be four. Eight shalt thou not indent, nor either indent thou
> two, excepting that thou then proceed to four. Tabs are right out.
>
> _______________________________________________
> Python-Dev mailing list
> Python-Dev at python.org
> http://mail.python.org/mailman/listinfo/python-dev
> Unsubscribe: http://mail.python.org/mailman/options/python-dev/guido%40python.org
>



-- 
--Guido van Rossum (home page: http://www.python.org/~guido/)


More information about the Python-Dev mailing list