Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #53995
| Date | 2013-09-11 22:41 +0200 |
|---|---|
| From | Markus Rother <python@markusrother.de> |
| Subject | Re: Language design |
| References | <522eb795$0$29999$c3e8da3$5496439d@news.astraweb.com> |
| Newsgroups | comp.lang.python |
| Message-ID | <mailman.266.1378933023.5461.python-list@python.org> (permalink) |
Hello all,
Thanks for this thread. Here are my two cents...
On 10.09.2013 08:09, Steven D'Aprano wrote:
> 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.
"""
1. Occasionally, one encounters a strange idiom. Syntactically
legal and consistent, though:
>>> +4++4
8
>>> -4+-4
-8
>>> -4-+4
-8
2. Reduce removed from standard library. That is a big fail, in
my opinion.
3. The default return value of methods is None instead of self.
If it was self, it would be possible to chain method calls (which
is called a cascade in smalltalk).
>>> lst = []
>>> lst.append(1).append(2).append(3) ## FAIL
Traceback (most recent call last):
...
AttributeError: 'NoneType' object has no attribute 'append'
Instead, this works:
>>> class Coll(list):
...
... def add(self, e):
... self.append(e)
... return self
...
>>> lst = Coll()
>>> lst.add(1).add(2).add(3) ## OK
[1, 2, 3]
A very practical use case is, that the return value of None makes
all of these methods unusable for reduce.
>>> from functools import reduce
...
>>> many = [{1: 'a'}, {2: 'b'}, {3: 'c'}]
...
>>> reduce(lambda d, other : d.update(other), many, {}) ## FAIL
Traceback (most recent call last):
...
AttributeError: 'NoneType' object has no attribute 'update'
Again, one would have to define an update function with an
explicit return value.
>>> many = [{1: 'a'}, {2: 'b'}, {3: 'c'}]
...
>>> def fn(d, other):
... d.update(other)
... return d
...
>>> reduce(fn, many, {}) ## OK
{1: 'a', 2: 'b', 3: 'c'}
4. As has been mentioned already, some built-in functions do magic
stuff behind the scenes:
>>> () == []
False
But:
>>> bool(().__eq__([]))
True
Because:
>>> ().__eq__([])
NotImplemented
which yields True when cast to boolean.
"""
Greets,
Markus
Back to comp.lang.python | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Language design Steven D'Aprano <steve@pearwood.info> - 2013-09-10 06:09 +0000
Re: Language design diverman <pavel@schon.cz> - 2013-09-09 23:59 -0700
Re: Language design Ben Finney <ben+python@benfinney.id.au> - 2013-09-10 17:07 +1000
Re: Language design Nobody <nobody@nowhere.com> - 2013-09-11 01:03 +0100
Re: Language design Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2013-09-11 00:53 +0000
Re: Language design Nobody <nobody@nowhere.com> - 2013-09-12 18:23 +0100
Re: Language design Antoon Pardon <antoon.pardon@rece.vub.ac.be> - 2013-09-10 09:58 +0200
Re: Language design Chris Angelico <rosuav@gmail.com> - 2013-09-10 20:20 +1000
Re: Language design Chris Rebert <clp2@rebertia.com> - 2013-09-10 18:46 -0700
Re: Language design Chris Angelico <rosuav@gmail.com> - 2013-09-11 14:21 +1000
Re: Language design Burak Arslan <burak.arslan@arskom.com.tr> - 2013-09-11 13:38 +0300
Re: Language design Neil Cerutti <neilc@norwich.edu> - 2013-09-11 14:32 +0000
Re: Language design Chris Angelico <rosuav@gmail.com> - 2013-09-12 00:46 +1000
Re: Language design Wayne Werner <wayne@waynewerner.com> - 2013-09-11 06:42 -0500
Re: Language design Dave Angel <davea@davea.name> - 2013-09-11 12:05 +0000
Re: Language design Ethan Furman <ethan@stoneleaf.us> - 2013-09-11 07:52 -0700
Re: Language design Burak Arslan <burak.arslan@arskom.com.tr> - 2013-09-11 18:41 +0300
Re: Language design Markus Rother <python@markusrother.de> - 2013-09-11 22:41 +0200
Re: Language design Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2013-09-11 23:40 +0000
Re: Language design Mark Janssen <dreamingforward@gmail.com> - 2013-09-11 14:22 -0700
Re: Language design Mark Janssen <dreamingforward@gmail.com> - 2013-09-11 14:30 -0700
Re: Language design Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2013-09-11 23:40 +0000
Re: Language design Mark Janssen <dreamingforward@gmail.com> - 2013-09-11 17:49 -0700
Re: Language design Steven D'Aprano <steve@pearwood.info> - 2013-09-12 05:33 +0000
Re: Language design Mark Janssen <dreamingforward@gmail.com> - 2013-09-12 20:23 -0700
Re: Language design Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2013-09-13 05:08 +0000
Re: Language design Chris Angelico <rosuav@gmail.com> - 2013-09-13 17:39 +1000
Re: Language design Mark Janssen <dreamingforward@gmail.com> - 2013-09-14 19:37 -0700
Re: Language design Antoon Pardon <antoon.pardon@rece.vub.ac.be> - 2013-09-15 09:57 +0200
Re: Language design Terry Reedy <tjreedy@udel.edu> - 2013-09-11 21:40 -0400
Re: Language design Chris Angelico <rosuav@gmail.com> - 2013-09-12 11:41 +1000
Re: Language design Ethan Furman <ethan@stoneleaf.us> - 2013-09-11 14:15 -0700
RE: Language design "Prasad, Ramit" <ramit.prasad@jpmorgan.com.dmarc.invalid> - 2013-09-11 21:56 +0000
Re: Language design Ben Finney <ben+python@benfinney.id.au> - 2013-09-12 09:16 +1000
Please omit false legalese footers (was: Language design) Ben Finney <ben+python@benfinney.id.au> - 2013-09-12 09:22 +1000
Re: Please omit false legalese footers (was: Language design) Grant Edwards <invalid@invalid.invalid> - 2013-09-12 20:12 +0000
Re: Language design Chris Angelico <rosuav@gmail.com> - 2013-09-12 09:27 +1000
Re: Language design Ben Finney <ben+python@benfinney.id.au> - 2013-09-12 09:19 +1000
Re: Language design Terry Reedy <tjreedy@udel.edu> - 2013-09-11 19:51 -0400
Re: Language design Mark Janssen <dreamingforward@gmail.com> - 2013-09-11 17:25 -0700
Re: Language design Chris Angelico <rosuav@gmail.com> - 2013-09-12 10:31 +1000
Re: Language design Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2013-09-12 02:33 +0000
Re: Language design Roy Smith <roy@panix.com> - 2013-09-11 22:43 -0400
Re: Language design Chris Angelico <rosuav@gmail.com> - 2013-09-12 12:58 +1000
Re: Language design Steven D'Aprano <steve@pearwood.info> - 2013-09-12 05:08 +0000
Re: Language design Mark Janssen <dreamingforward@gmail.com> - 2013-09-11 17:34 -0700
Re: Language design Mark Janssen <dreamingforward@gmail.com> - 2013-09-11 17:37 -0700
Re: Language design Chris Angelico <rosuav@gmail.com> - 2013-09-12 10:40 +1000
Re: Language design Benjamin Kaplan <benjamin.kaplan@case.edu> - 2013-09-11 17:54 -0700
Re: Language design Ben Finney <ben+python@benfinney.id.au> - 2013-09-12 10:57 +1000
Re: Language design Joshua Landau <joshua@landau.ws> - 2013-09-12 05:17 +0100
Re: Please omit false legalese footers (was: Language design) Skip Montanaro <skip@pobox.com> - 2013-09-12 04:27 -0500
Re: Please omit false legalese footers (was: Language design) Oscar Benjamin <oscar.j.benjamin@gmail.com> - 2013-09-12 10:44 +0100
Re: Language design Markus Rother <python@markusrother.de> - 2013-09-12 19:51 +0200
Re: Language design Neil Cerutti <neilc@norwich.edu> - 2013-09-12 18:06 +0000
Re: Language design Markus Rother <python@markusrother.de> - 2013-09-12 20:13 +0200
Re: Language design Markus Rother <python@markusrother.de> - 2013-09-12 20:24 +0200
Re: Language design Neil Cerutti <neilc@norwich.edu> - 2013-09-12 19:18 +0000
Re: Language design Ethan Furman <ethan@stoneleaf.us> - 2013-09-12 11:05 -0700
Re: Language design Ned Batchelder <ned@nedbatchelder.com> - 2013-09-12 14:37 -0400
Re: Language design Terry Reedy <tjreedy@udel.edu> - 2013-09-12 14:46 -0400
Re: Language design Chris Angelico <rosuav@gmail.com> - 2013-09-13 07:53 +1000
Re: Language design Antoon Pardon <antoon.pardon@rece.vub.ac.be> - 2013-09-13 09:04 +0200
Re: Language design Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2013-09-13 10:13 +0000
Re: Language design Chris Angelico <rosuav@gmail.com> - 2013-09-13 21:16 +1000
Re: Language design Antoon Pardon <antoon.pardon@rece.vub.ac.be> - 2013-09-13 13:28 +0200
Re: Language design Terry Reedy <tjreedy@udel.edu> - 2013-09-13 15:32 -0400
Re: Language design Chris Angelico <rosuav@gmail.com> - 2013-09-14 09:57 +1000
Re: Language design Neil Cerutti <neilc@norwich.edu> - 2013-09-18 14:57 +0000
Re: Language design Chris Angelico <rosuav@gmail.com> - 2013-09-19 01:02 +1000
Re: Language design Neil Cerutti <neilc@norwich.edu> - 2013-09-18 15:08 +0000
Re: Language design Chris Angelico <rosuav@gmail.com> - 2013-09-19 01:12 +1000
Re: Language design William Ray Wing <wrw@mac.com> - 2013-09-18 12:58 -0400
Re: Language design wxjmfauth@gmail.com - 2013-09-18 10:45 -0700
Re: Language design Neil Cerutti <neilc@norwich.edu> - 2013-09-18 17:55 +0000
Re: Language design Mark Janssen <dreamingforward@gmail.com> - 2013-09-13 17:28 -0700
Re: Language design Vito De Tullio <vito.detullio@gmail.com> - 2013-09-14 07:25 +0200
csiph-web