use*_*514 5 python return function object
所有,
def a(p):
return p+1
def b(func, p):
return func(p)
b(a,10) # 11
Run Code Online (Sandbox Code Playgroud)
实际上我不希望结果为"11",我想要的是一个函数对象,参数已被绑定,让我们将其命名为c.
当我使用c()或类似的东西时,它会给我结果11,可能吗?
谢谢!
该functools模块提供的partial功能可以为您提供以下功能:
import functools
def a(p):
return p+1
def b(func, p):
return functools.partial(func, p)
c = b(a,10)
print c() # >> 11
Run Code Online (Sandbox Code Playgroud)
它可用于将一些参数应用于函数,并保留其余参数:
def add(a,b):
return a+b
add2 = functools.partial(add, 2)
print add2(10) # >> 12
Run Code Online (Sandbox Code Playgroud)
你也可以使用functools模块
import functools
def add(a,b):
return a+b
>> add(4,6)
10
>> plus7=functools.partial(add,7)
>>plus7(9)
16
唯一的方法是将它包装在lambda中:
c = lambda : b(a,10)
c() # 11
Run Code Online (Sandbox Code Playgroud)
虽然如果你打算给它命名,那与你相比并没有给你带来任何好处
def c():
b(a,10)
Run Code Online (Sandbox Code Playgroud)