Duncan Booth wrote: > Peter Otten <__pete...@web.de> wrote: > >>>>> from collections import defaultdict >>>>> d = defaultdict(1 .conjugate) >>>>> d["x"] += 2 >>>>> d["x"] >> 3 >> >> Isn't that beautiful? Almost like home;) >> >> It is also fast: >> >> $ python -m timeit -s"one = lambda: 1" "one()" >> 1000000 loops, best of 3: 0.213 usec per loop >> $ python -m timeit -s"one = 1 .conjugate" "one()" >> 10000000 loops, best of 3: 0.0972 usec per loop >> >> Micro-optimisation, the best excuse for ugly code... >> > > Nice one, but if you are going to micro-optimise why not save a few > keystrokes while you're at it and use '1 .real' instead?
>>> 1 .real 1 >>> 1 .conjugate <built-in method conjugate of int object at 0x1734298> >>> 1 .conjugate() real is a property, not a method. conjugate() was the first one that worked that was not __special__. I think it has the added benefit that it's likely to confuse the reader... Peter -- http://mail.python.org/mailman/listinfo/python-list