如何在 python 中使用预先指定的参数将函数作为另一个函数的参数传递?
How to pass functions as parameters of another function with pre-specified arguments in python?
有没有一种方法可以传递看起来干净的带有参数的函数?例如,如果我想从 ars 传递具有特定参数值 a
b
的函数 h
,以便 ars1 运行这些特定的 a
b
,应该我愿意?我想做
def h(x, a, b):
return x * a * b
def ars(fcn):
a = 1
b = 2
return ars1(fcn( . , a,b))
def ars1(fcn):
return fcn(1)*fcn(1)
ars(h)
我可以
def h(x, a, b):
return x * a * b
def ars(fcn):
a = 1
b = 2
return ars1(fcn, a, b)
def ars1(fcn, a, b):
return fcn(1, a, b)*fcn(1, a, b)
达到了目的,但是由于a
b
和ars1
没有任何关系,所以代码看起来很乱,缺乏模块化。
您可以使用 lambda
函数来实现:
def h(x, a, b):
return x * a * b
def ars(fcn):
a = 1
b = 2
return ars1(lambda x: fcn(x, a, b))
def ars1(fcn):
return fcn(1)*fcn(1)
ars(h)
有没有一种方法可以传递看起来干净的带有参数的函数?例如,如果我想从 ars 传递具有特定参数值 a
b
的函数 h
,以便 ars1 运行这些特定的 a
b
,应该我愿意?我想做
def h(x, a, b):
return x * a * b
def ars(fcn):
a = 1
b = 2
return ars1(fcn( . , a,b))
def ars1(fcn):
return fcn(1)*fcn(1)
ars(h)
我可以
def h(x, a, b):
return x * a * b
def ars(fcn):
a = 1
b = 2
return ars1(fcn, a, b)
def ars1(fcn, a, b):
return fcn(1, a, b)*fcn(1, a, b)
达到了目的,但是由于a
b
和ars1
没有任何关系,所以代码看起来很乱,缺乏模块化。
您可以使用 lambda
函数来实现:
def h(x, a, b):
return x * a * b
def ars(fcn):
a = 1
b = 2
return ars1(lambda x: fcn(x, a, b))
def ars1(fcn):
return fcn(1)*fcn(1)
ars(h)