返回带参数binded的函数对象?

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,可能吗?

谢谢!

Ned*_*der 9

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)


mos*_*lix 8

你也可以使用functools模块


import functools

def add(a,b):
    return a+b

>> add(4,6)

10
>> plus7=functools.partial(add,7)
>>plus7(9)
16

 


sep*_*p2k 6

唯一的方法是将它包装在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)