[Python-Dev] complaints.. (original) (raw)
Guido van Rossum guido at python.org
Sun Jan 13 18:31:58 CET 2008
- Previous message: [Python-Dev] complaints..
- Next message: [Python-Dev] Some tardy mailman checking
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
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/)
- Previous message: [Python-Dev] complaints..
- Next message: [Python-Dev] Some tardy mailman checking
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]