Jose Mora a écrit :
Duck typing is called that way because "If it looks like a duck and
quacks like a duck, it must be a duck."

or at least something close enough...

I think it would be good to
have also "If the programmer wants to deal with it like a duck, it
must be a duck"

DWIM[1] just doesn't work. No parser can read your mind, and the harder they try, the more bugs they are likely to cause. IOW : cows neither look nor quack like ducks, and asking a cow to quack just won't turn your cow into a duck.


[1] Do What I Mean

I mean, some tasks are rather boring in python when compared with php,

Possibly. OTHO, and from years of experience with both languages, a lot of tasks are way more boring in php when compared to Python.

for example, let's imagine we have a dictionary that contains
dictionaries that contain the times that a key appears. We, or at
least I, would like to write something as short as:

dict[k1][k2] += 1
>
However we will have to do a longer code (this is the smallest code I
could come up with):

    dict = {}

bad identifier - it shadows the builtin dict type.

    if not k1 in dict:
      dict[k1] = {}
    if not k2 in dict[k1]:
      dict[k1][k2] = 0
    dict[k1][k2] += 1

What about:

from collections import defaultdict
d = defaultdict(lambda: defaultdict(int))

for k1, k2 in whatever:
    d[k1][k2] += 1



NB : this requires a "recent" Python version (works on 2.5.1 at least). Else, yes, this will be a bit more "boring":

d = dict()
for k1, k2 in whatever:
    d2 = d.setdefault(k1, dict())
    d2[k2] = d2.get(k2, 0) + 1


HTH

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to