繁体   English   中英

DailyCodingProblems:f参数/功能

[英]DailyCodingProblems: f parameter/function

所以我正在研究日常编码问题,而今天我得到的问题让我感到难过。

cons(a,b)构造一对,car(pair)和cdr(pair)返回该对的第一个和最后一个元素。 例如,car(cons(3,4))返回3,cdr(cons(3,4))返回4。

鉴于这种利弊的实施:

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

实施汽车和cdr。

我不明白“f”代表什么。 我尝试打印我从该函数获得的东西:

x = cons(3, 4)
<function cons.<locals>.pair at 0x2adc0ec45ae8>

但我仍然不明白它是什么。 有任何想法吗?

让我们来看看cons

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

因此,调用cons(3, 4)动态创建一个函数,就像你静态定义它一样:

def pair_3_4(f)
    return f(3, 4)

同样:

pair1 = cons(2, 6)
pair2 = cons(5, 8)
pair3 = cons("a", "b")

相当于:

def pair1(f)
    return f(2, 6)
def pair2(f)
    return f(5, 8)
def pair3(f)
    return f("a", "b")

现在,让我们来看看pair

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

从这里,你可以猜测f必须是一个可调用的对象,它需要两个参数。 最简单的可调用对象是一个函数,所以假设f是一个函数。

你也可以看到, pair简单的调用f与任何ab被绑定到它的cons

这是一个我用print作为f的例子:

>>> pair_3_4 = cons(3, 4)
>>> pair_3_4(print)
3 4
>>> cons(3, 4)(print)
3 4
>>> print(3, 4)
3 4

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM