Python函数将应用于另一个变量

XuM*_*MuK 1 python function python-3.x

例如:

def some_function(a):
     if a == 1:
          return x ** 2
     else:
          return x - 1000

some_function(a)(b)
Run Code Online (Sandbox Code Playgroud)

因此,当我们拥有a==1,获得b**2并在所有其他情况下b-1000.

甚至可能在python中,获得一些未知变量,它将被另一个变换?

问题恰恰是没有触及b,直接功能将无法实现.

应该工作的代码是some_function(a)(b).

Bre*_*bel 6

这通常被称为curryingpartial函数.它在python中看起来像这样

from functools import partial

def some_function(a, x):
    if a == 1:
        return x ** 2
    else:
        return x - 1000
Run Code Online (Sandbox Code Playgroud)

通常,您存储部分功能

a = 1
func = partial(some_function, a)
func(5)
Run Code Online (Sandbox Code Playgroud)

但您也可以将它们用作一个衬垫.

partial(some_function, 1)(5)
partial(some_function, 0)(1500)
Run Code Online (Sandbox Code Playgroud)

或者,您可以some_function返回一个函数

def some_function(a):
    if a == 1:
        return lambda b: b **2
    else:
        return lambda b: b - 1000
Run Code Online (Sandbox Code Playgroud)

partial然而,使用通常是更灵活的方法.