Python 在模块中复制函数并更改默认参数

Python 在模块中复制函数并更改默认参数,python,python-2.7,Python,Python 2.7,我正在努力寻找一个解决方案,它将复制函数,重命名它,并应用一个参数。一个例子更能说明问题 我有一个模块: get(a, c=4, ver=False): ... set(a, b, c=4, ver=False): ... 等 并希望为所有这些函数创建相应的函数(如果手动完成) ver_get(*args, **kwargs): kwargs['ver'] = True return get(*args, **kwargs) ver_set(*args, **kwa

我正在努力寻找一个解决方案,它将复制函数,重命名它,并应用一个参数。一个例子更能说明问题

我有一个模块:

get(a, c=4, ver=False):
  ...

set(a, b, c=4, ver=False):
  ...

并希望为所有这些函数创建相应的函数(如果手动完成)

ver_get(*args, **kwargs):
    kwargs['ver'] = True
    return get(*args, **kwargs)

ver_set(*args, **kwargs):
    kwargs['ver'] = True
    return set(*args, **kwargs)
我在所有函数上都尝试了for循环,但由于f的后期绑定问题而失败(见下文)。由于使用了*args、**kwargs,我无法应用将函数f作为输入的正常解决方法

funcs = {}
g = None
f = None
for g, f in globals().iteritems():
    funcs['ver_'+g] = lambda *args, **kwargs: f(*args, **dict(kwargs, ver=True))
在此之后,func还需要包含在globals中


我为什么要这样做?只是为了在不需要手动复制函数的情况下获得更好的语法。

我之前试图找到一个答案,但失败了,然后突然被它绊倒了。使用部分。完整解决方案:

funcs = {}
g = None
f = None
from functools import partial
for g, f in globals().iteritems():
    if hasattr(f, '__call__'):
        funcs['ver_'+g] = partial(f, ver=True)
globals().update(funcs)
del funcs
del g
del f