我正在阅读一个具有此语法的Python脚本
a,b = foo(c,d)(f,g)
因为这是我第一次看到这种语法。我不知道如何解释。你能帮我理解吗?谢谢。
Unfortunately I am not authorized to share the code.
foo 的结构如下。
def foo(n):
def todo(func):
def dodo(*args, **kargs):
...
...
...
return func(*args, **kargs)
return dodo
return todo
大家好,
a,b = foo(c,d)(f,g)
的意思是
foo(c,d)
)foo(c,d)(f,g)
(func(f,g)
))a,b = foo(c,d)(f,g)
(a = foo(c,d)(f,g)[0]
))b = foo(c,d)(f,g)[1]
)所以
a,b = foo(c,d)(f,g)
是一种写作方式
save = foo(c,d)(f,g)
a = save[0]
b = save[1]
示例:
(警告:c、d、f 和 g 在我的示例中都是整数)
foo 返回一个函数。示例:
def foo(c,d):
if c+d > 10:
return func1
else:
return func2
所以你用 f 和 g 执行 func1 (或 func2),
然后将输出 1 保存到 a,将输出 2 保存到 b
func1 和 func2 示例:
def func1(f,g):
return [f+1,g+1]
def func2(f,g):
return [f-1,g-1]
那么该片段将按如下方式使用:
c = 5
d = 8
f = 19
g = 4
def func1(f,g):
return [f+1,g+1]
def func2(f,g):
return [f-1,g-1]
def foo(c,d):
if c+d > 10:
return func1
else:
return func2
a,b = foo(c,d)(f,g)
如果我们在末尾添加打印然后
a 将是 20
b 将为 5。