Amaury Forgeot d'Arc <amaur...@gmail.com> added the comment: setdefault() is a method, its arguments are evaluated then the function is called. This is not a bug, and this behavior cannot change.
If you are trying to "cache" the computation of a function, you should try "memoizing" techniques, like the one mentioned here: http://code.activestate.com/recipes/52201-memoizing-cacheing-function-return-values/ Then you can write:: @Memoize def fib(n): return fib(n-1) + fib(n-2) fib.memo = {(0,): 1, (1,): 1} @Memoize def func(n): return 1/float(n) func.memo = {(0.0,): infinite} ---------- nosy: +amaury.forgeotdarc resolution: -> invalid status: open -> closed _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue10930> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com