簡體   English   中英

**或pow()不支持的操作數類型:“函數”和“整數”

[英]unsupported operand type(s) for ** or pow(): 'function' and 'int'

這是我的代碼,您能告訴我打印時導致錯誤的原因嗎? 函數組成應該計算函數組成。

def compose(lst):
    return acc(g, h, lst)
print(compose([lambda x:x**2,lambda y:2*y])(5))
def acc(f, v, lst):
    if len(lst)==0:
        return v
    if len(lst)==1:
        return f(v,lst[0])
    return f(lst[0], acc(f,v,lst[1:]))
def h(f):
     return f
def g(f1,f2):
     return f1(f2)

您需要創建一個函數g ,該函數實際使用參數調用f2

def g(f1, f2):
    def func(*args, **kwargs):
        return f1(f2(*args, **kwargs))
    return func

print(compose([lambda x: x**2, lambda y: 2*y])(5))

輸出:

100

這等效於:

>>> (lambda x: x**2)((lambda y: 2*y)(5))
100

在最后一行f1(f2) ,給f1的參數是f2 (一個lambda),而不是int 5。

您需要做類似lst[0](lst[1](x))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM