我在Python中使用partial
函数的新手。这是一段简单的代码,我希望它可以打印出结果,但不知何故它不会打印任何内容,或者说显示firstfunc
被执行:
from functools import partial
class zebra(object):
def firstfunc(self, a, b, c):
res = 3*a + 55*b + c
print(res)
return res
def partial_func(self, a, c):
return partial(self.firstfunc, b = 2)
myzebra = zebra()
alist = [1, 2, 3, 4]
blist = [7, 8, 9, 11]
map(myzebra.partial_func, alist, blist)
答案 0 :(得分:2)
您的@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
final List<Object> providers = new ArrayList<Object>();
JacksonJaxbJsonProvider jacksonJsonProvider = new JacksonJaxbJsonProvider();
providers.add( jacksonJsonProvider );
webClient = WebClient.create( "http://localhost:8080/api", providers );
WebClient.getConfig( webClient ).getRequestContext().put( LocalConduit.DIRECT_DISPATCH, Boolean.TRUE );
webClient.accept( "application/json" );
}
被调用,并返回部分函数对象。如果您希望将其称为以及,请在myzebra.partial_func()
中执行此操作:
myzebra.partial_func()
或使用def partial_func(self, a, c):
return partial(self.firstfunc, b = 2)(a=a, c=c)
中的lambda为您调用它:
map()
请注意,由于您将map(lambda a, c: myzebra.partial_func(a, c)(a=a, c=c), alist, blist)
作为关键字参数,因此您必须至少将 b
作为关键字参数传递。
c
不会递归调用对象;只调用最外面的对象。
在Python 2中,代码现在可以运行:
map()
在Python 3中,>>> map(lambda a, c: myzebra.partial_func(a, c)(a=a, c=c), alist, blist)
120
124
128
133
[120, 124, 128, 133]
懒洋洋地循环,所以你需要迭代它才能执行它:
map()