如何使用Python创建调度样式lambda函数?

时间:2014-12-15 09:06:22

标签: python lambda dispatch

如果我使用给定的调度样式函数来表示一对,我如何使用一行lambda函数实现相同的功能?

# ADT Level 0 (dispatch-style pair)
def make_pair(x, y):
"""Dispatch-style pair"""
    def dispatch(m):
        if m == 0:
            return x
        elif m == 1:
            return y
    return dispatch

2 个答案:

答案 0 :(得分:3)

您可以执行以下操作:

make_pair = lambda x,y: lambda m: x if m == 0 else y if m == 1 else None

外部lambda返回一个(内部)lambda,等待一个参数m,它返回外部创建的作用域中的绑定变量。

>>>one_two = make_pair(1, 2)
>>>one_two(1)
2
>>> one_two(2)
>>> 

答案 1 :(得分:2)

您可以使用imbricated lambdas返回lambda表达式:

>>> make_pair=lambda x,y:lambda m:x if m==0 else y
>>> a=make_pair(2,4)
>>> a(1)
4
>>> a(0)
2

lambda m:x if m==0 else y(或多或少)等同于您的调度函数(a(2)将在我的情况下返回4)