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 <[EMAIL PROTECTED]> 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@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/) _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com