首页 > 解决方案 > 如何在python中打开一个闭包?

问题描述

我遇到了以下面试问题,不知道如何解决:

def cons(a, b):
    def pair(f):
        return f(a, b)
    return pair

给定一对,例如cons(6,8)我被要求单独返回a和返回b,例如在这种情况下分别为 6、8。

意思是,例如,

def first(pair):
    pass
    #would return pair's `a` somehow

def second(pair):
    pass
    #would return pair's `b` somehow

如何才能做到这一点?

标签: pythonclosures

解决方案


你可以试试:

pair = cons(6, 8)

def first(pair):
    return  pair(lambda x, y: x)

def second(pair):
    return  pair(lambda x, y: y)

print(first(pair))
print(second(pair))

# ouput:
# 6
# 8

推荐阅读