iT邦幫忙

0

Python 用Closure解決兩個參數相乘問題

我想問 要怎麼用closure function 寫出加權分數
例如現在有三個原始分數10,35,67,權重分別為2,3,4
要怎麼print出加權分數為20,105,268呢?
一定要用Closure喔!拜託大家了 我研究好久都不會嗚嗚嗚...

2
fillano
iT邦超人 1 級 ‧ 2021-06-01 19:07:02

像這樣?

def weight(w):
    def result(n):
        print(n * w)
    return result
f1 = weight(2)
f2 = weight(3)
f3 = weight(4)
f1(10)
f2(35)
f3(67)
1
I code so I am
iT邦高手 1 級 ‧ 2021-06-02 11:01:13

與 JS 用法一模一樣,Lambda 也可以做到。

import numpy as np

def test():
    weights = np.array([2,3,4])
    def inner(data):
        print(data * weights)
    return inner
    
obj = test()
obj(np.array([10,35,67]))
0
highwall
iT邦新手 5 級 ‧ 2021-07-28 16:52:40
def weight(*nums):
    def inner(*weights):
        return [n*w for n, w in zip(nums, weights)]
    return inner

weight(10, 35, 67)(2, 3, 4)

我要發表回答

立即登入回答