[EMAIL PROTECTED] wrote: > I want to have a bound method that "fixes" more than one parmeter of a > funtion. LEt me post an example. > > def f(a, b, c): > return a + b + c > > I can do: > fplus10 = f(10) > and then call f with 2 params and it works. > > But, how can I fix 2 params: > fplus10plus20 = f(10,20) > ignores the second param. > > fplus10plus20= fplus10(20) > does not work either. > > Can anybody show what I'm doing wrong?
Bound methods are limited to one implicit parameter. What you need is partial function application: >>> def f(a, b, c): ... return a + b + c ... >>> def partial(f, *args): ... def g(*more): ... return f(*args+more) ... return g ... >>> partial(f, 1, 2)(3) 6 >>> partial(f, 1)(2, 3) 6 >>> partial(f)(1, 2, 3) 6 See http://www.python.org/dev/peps/pep-0309/ for more. Peter -- http://mail.python.org/mailman/listinfo/python-list