例如:
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)
。你知道吗
Tags:
这通常被称为currying或partial函数。在python中是这样的
一般来说,您存储部分函数
但你也可以把它们当作一行。你知道吗
或者,您可以让
some_function
返回一个函数不过,使用
partial
通常是更灵活的方法。你知道吗虽然Brian的答案是有效的,但是它有代码重复,并且不能利用函数闭包。你知道吗
函数闭包意味着函数定义范围内的变量在函数创建之后会被维护,即使变量现在超出了范围。你知道吗
在本例中,变量
a
仅在some_function
的范围内定义,但由于我们在f(x)
中使用它,因此当我们稍后调用返回的函数时,它仍然可用。你知道吗在这种情况下,另一个答案是正确的,但可能不适合您正在尝试的操作。你知道吗
您要做的是返回一个函数,Python使之非常简单:
相关问题 更多 >
编程相关推荐