Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中使用Lambda函数生成操作生成器_Python - Fatal编程技术网

如何在Python中使用Lambda函数生成操作生成器

如何在Python中使用Lambda函数生成操作生成器,python,Python,mul接受两个变量x,y并返回x*y。pow接受两个变量x,y并返回x^y。请注意,这两个函数非常相似。我们可以将通用性抽象为更通用的函数make_生成器,这样我们就可以编写: def make_multiplier(scaling_factor): return lambda x: mul(x, scaling_factor) def make_exponentiator(exponent): return lambda x: pow(x, exponent) 编写函数ma

mul接受两个变量x,y并返回x*y。pow接受两个变量x,y并返回x^y。请注意,这两个函数非常相似。我们可以将通用性抽象为更通用的函数make_生成器,这样我们就可以编写:

def make_multiplier(scaling_factor):
    return lambda x: mul(x, scaling_factor)

def make_exponentiator(exponent):
    return lambda x: pow(x, exponent)
编写函数make_生成器

测试用例:

  • make_乘数(3)(2)=6
  • make_指数(3)(2)=8
  • 我的解决方案:

    make_multiplier = make_generator(mul)
    make_exponentiater = make_generator(pow)
    
    

    我得到了输出,但没有通过给定的测试用例。任何帮助都将不胜感激。

    您的函数应该接受一个操作并返回一个函数,该函数使函数以固定值使用该操作(我知道这有点难以理解)。而您当前的实现只返回一个函数,该函数接受两个值并返回结果。更改您的实现,如下所示:

    def make_generator(op):
        return lambda x, y: op(x, y)
    #################
    # DO NOT REMOVE #
    #################
    
    def mul(x,y):
        return x*y
    
    def pow(x,y):
        return x**y
    
    make_multiplier = make_generator(mul)
    make_exponentiator = make_generator(pow)
    
    

    如果您有一个类似于
    f(x,y)
    的函数,并且您希望能够像
    g(x)(y)
    那样调用它,则称为。您可以像这样变换lambda:

    #旧版本
    返回λx,y:op(x,y)
    #咖喱版
    返回λx:λy:op(x,y)
    
    程序没有通过的测试用例是什么?测试用例:make_乘数(3)(2)=6 make_指数(3)(2)=8非常感谢。Lambda函数非常有趣,这个问题让我有些紧张。
    def make_generator(op):
        def make_operation(fixed_value):
            return lambda x: op(x, fixed_value)
        return make_operation