例如:
def some_function(a):
if a == 1:
return x ** 2
else:
return x - 1000
some_function(a)(b)
作为结果,当我们有 a==1 时,获得 b**2 并且在所有其他情况下为 b-1000。
在 python 中是否有可能返回一些未知变量,这些变量将被另一个变量替换?
问题恰恰是关于不接触b,它将无法直接访问函数。
应该工作的代码是some_function(a)(b)。
请您参考如下方法:
这通常称为柯里化(Currying) 或部分 函数。在 python 中看起来像这样
from functools import partial
def some_function(a, x):
if a == 1:
return x ** 2
else:
return x - 1000
通常,您存储偏函数
a = 1
func = partial(some_function, a)
func(5)
但您也可以只将它们用作一个衬垫。
partial(some_function, 1)(5)
partial(some_function, 0)(1500)
或者,您可以让 some_function 返回一个函数
def some_function(a):
if a == 1:
return lambda b: b **2
else:
return lambda b: b - 1000
使用 partial 通常是更灵活的方法。
