我有一些python代码,它基于一个旧函数定义了一个新函数。
def myFunction(a: int, b: int, c: int):
# Do stuff
myNewFunction = lambda a, b: myFunction(a, b, 0)
我的新函数与旧函数相同,但将最后一个参数设置为0。
我的问题:假设我不知道这个函数有三个参数,我能让上面的解决方案更通用吗?一个意图正确的无效解决方案可能是这样的:
def myFunction(a: int, b: int, c: int):
# Do stuff
func_args = myFunction.__code__.co_varnames
func_args = func_args[:-1]
myNewFunction = lambda *func_args : myFunction(*func_args, 0)
1条答案
按热度按时间pjngdqdw1#
你几乎是正确的,你可以这样使用
functools.partial
(而不是lambda):从技术上讲,
partial
不是一个函数,它是一个类,但我不认为这是你所关心的。如果你想让它成为一个函数类型,文档中有一个与原始
partial
(大致)等价的纯Python: