Say I have a two dimensional function f(x,y) and another function G(function) that takes a function as an input. BUT, G only takes one dimensional functions as input and I\
The functools.partial function can be used to do this (note, it's not entirely clear where c comes from in your example code, so I've assumed it's some constant).
import functools
def f(x,y):
return x+y
c = 3
G = functools.partial(f, c)
G(4)
I think this is more explicit than the lambda approaches suggested so far.
Edit: replacing the right most argument is not possible as we are dealing with positional arguments. Depending on the level of control available, you could introduce a wrapper which handles the switching:
import functools
def f(x,y):
return x+y
def h(c,y):
return f(y,c)
c = 3
G = functools.partial(h, c)
G(4)
But I think you start to sacrifice readability and maintainability at this point...