Python 部分函数没有执行
Python partial function doesn't execute
我刚开始使用 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)
你的myzebra.partial_func()
被调用了,它returns是一个偏函数对象。如果您希望它也被称为 ,请在 myzebra.partial_func()
:
中这样做
def partial_func(self, a, c):
return partial(self.firstfunc, b = 2)(a=a, c=c)
或在 map()
中使用 lambda 为您调用它:
map(lambda a, c: myzebra.partial_func(a, c)(a=a, c=c), alist, blist)
请注意,因为您将 b
设置为关键字参数,所以您也必须将 至少 c
作为关键字参数传递。
map()
不会递归调用对象;只调用最外层的对象。
在 Python 2 中,代码现在有效:
>>> map(lambda a, c: myzebra.partial_func(a, c)(a=a, c=c), alist, blist)
120
124
128
133
[120, 124, 128, 133]
在Python 3中,map()
是惰性循环,所以你需要迭代它才能执行:
>>> list(map(lambda a, c: myzebra.partial_func(a, c)(a=a, c=c), alist, blist))
120
124
128
133
[120, 124, 128, 133]
我刚开始使用 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)
你的myzebra.partial_func()
被调用了,它returns是一个偏函数对象。如果您希望它也被称为 ,请在 myzebra.partial_func()
:
def partial_func(self, a, c):
return partial(self.firstfunc, b = 2)(a=a, c=c)
或在 map()
中使用 lambda 为您调用它:
map(lambda a, c: myzebra.partial_func(a, c)(a=a, c=c), alist, blist)
请注意,因为您将 b
设置为关键字参数,所以您也必须将 至少 c
作为关键字参数传递。
map()
不会递归调用对象;只调用最外层的对象。
在 Python 2 中,代码现在有效:
>>> map(lambda a, c: myzebra.partial_func(a, c)(a=a, c=c), alist, blist)
120
124
128
133
[120, 124, 128, 133]
在Python 3中,map()
是惰性循环,所以你需要迭代它才能执行:
>>> list(map(lambda a, c: myzebra.partial_func(a, c)(a=a, c=c), alist, blist))
120
124
128
133
[120, 124, 128, 133]