python - A function with itself as a default argument -
defaults parsed @ definition. not work
def f(x, func = f): if x<1: return x else: return x + func(x-1)
i did find way, though. start dummy function
def a(x): return x def f(x, func=a): if x < 1: return x else: return x + func(x-1)
and issue
f.__defaults__ = (f,)
obviously awkward. there way or bad python? if it's bad, can explain why? break things?
in case, works:
in [99]: f(10) out[99]: 55 in [100]: f(10, f) out[100]: 55 in [101]: f(10, lambda x : 2*x) out[101]: 28
to elaborate on andrea corbellini's suggestion, can this:
def f(x, func=none): if func none: func = f if x < 1: return x else: return x + func(x-1)
it pretty standard idiom in python implement actual defaults inside of function , defining default parameter none
(or private sentinel object in case none
valid input), due problems mutable default values such list
objects.
Comments
Post a Comment