Python: разница между функцией, возвращающей функцию, и functools.partial? - PullRequest
0 голосов
/ 02 августа 2020

В Python (3.7.5), есть ли разница в том, как обрабатываются / выполняются следующие два блока кода?

def outer_A(u,v,w):
    def inner_A(x,y,z):
        return ([u,v,w],[x,y,z])
    return inner_A

innerA = outer_A(1,2,3)  # returns function 'inner_A' w/ closure (u=1,v=2,w=3)
result = innerA(4,5,6)  # returns tuple '([1,2,3],[4,5,6])'
from functools import partial

def outer_B(u,v,w,x,y,z):
    return ([u,v,w],[x,y,z])

innerB = partial(outer_B,1,2,3)  # returns partial function 'outer_B' w/ baked args (u=1,v=2,w=3)
result = innerB(4,5,6)  # returns tuple '([1,2,3],[4,5,6])

Если я знаю, что я всегда буду генерировать аргументы в этих двух группах (u, v, w) и (x, y, z), почему / когда я должен использовать одну реализацию вместо другой?

Есть другой, лучший способ сделать это?

...