【问题标题】:Function that applies two given functions to an outside argument in Python将两个给定函数应用于 Python 中的外部参数的函数
【发布时间】:2018-01-28 06:57:14
【问题描述】:

我正在回答一些大学顾问给我的面试准备问题,有人建议我为不同的面试准备这个问题:

"完成功能:

applyFunctions(outer_function, inner_function)

它接受两个函数,一个外部函数和一个内部函数,并返回一个函数,该函数将外部函数应用于内部函数并作为参数。”

我对这个问题有些困惑,因为它不接受函数中的参数,而是在函数之外应用:

applyFunctions(outer_function, inner_function)(5)

我熟悉 lambda 及其用途,但这个问题让我很困惑。

任何建议都会很棒。提前谢谢你。

编辑:

包含的测试用例(示例)是:

add2 = lambda x: x + 2
times2 = lambda x: x * 2

compose(add2,times2)(3)

> 8

【问题讨论】:

  • 这就是整个问题?它没有提及outer_functioninner_function的实现?
  • 我编辑了原始问题以包含一个示例。那里的一切都是问题中包含的内容。 @OmarEinea

标签: python python-3.x function lambda


【解决方案1】:

首先定义 innerouter 是:接受参数并返回结果的函数。

然后定义apply,一个接受两个函数的函数,并返回一个以某种方式组合这两个函数的函数。

def inner(n):
    print("inner called")
    return 3 * n

def outer(n):
    print("outer called")
    return n - 5

def apply(inn, out):
    return lambda n: out(inn(n))


a = apply(inner, outer)
print(a(5))

输出:

10

【讨论】:

    【解决方案2】:

    他们的意思是:创建一个函数,给定fg,创建一个接受x 并给出f(g(x)) 的函数。采用fg 的函数看起来像lambda f,g:<something> 采用x 的函数是lambda x:<something>。放在一起,你有lambda f, g: lambda x: f(g(x))

    【讨论】:

      【解决方案3】:

      使用 lambda 创建一个新函数,将所有 *args 和 **kwargs 传递给 inner_function,然后返回到 outer_function:

      def applyFunctions(outer_function, inner_function):
          return lambda *args, **kwargs: outer_function(inner_function(*args, **kwargs))
      

      【讨论】:

        猜你喜欢
        • 2016-03-20
        • 2021-09-21
        • 1970-01-01
        • 2021-09-02
        • 2015-06-11
        • 1970-01-01
        • 2019-08-05
        • 1970-01-01
        • 2016-04-09
        相关资源
        最近更新 更多