想要从返回的内部函数引用外部函数范围中的变量

时间:2015-10-15 20:24:14

标签: python python-3.x

所以我正在创建一个简单的程序,它获得2个函数(a和k)和一个整数值(b),然后它在两个函数(a和k)中得到形式参数,它是“x”并且适用条件x< b然后根据条件进行函数调用,a或b。但是当我运行程序时,它会给出一个错误,即x未在全局框架中定义。我希望它从分配给函数a和b的形式参数中得到“x”,然后根据它得到条件。

这是我的代码

def square(x):
    return x * x
def increment(x):
    return x + 1

def piecewise(a, k, b):
    if x<b:
        return a
    else:
        return k
mak = piecewise(increment,square ,3 )
print(mak(1))

1 个答案:

答案 0 :(得分:3)

我想你想做这样的事情:

def piecewise(a, k, b):
    def f(x):
        if x < b:
            return a(x)
        else:
            return k(x)
    return f

但是,我不确定这是不是一个好习惯。所以,我在这里留下我的答案,看看评论,并了解它是否有任何问题。