簡體   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