91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

一、高階函數、閉包

發布時間:2020-07-11 23:11:40 來源:網絡 閱讀:406 作者:siandd 欄目:開發技術

什么是高階函數?

一個函數的參數是否可以接受另外一個函數作為參數,這樣的函數就叫做高階函數。

最簡單的高階函數實例:

def func(x,y,z):
    return z(x)+z(y)
print(func(-20,-10,abs))

返回函數


高階函數除了可以接收函數參數之外,還可以把函數作為返回值

def func(*args):
    def sum():
        ax = 0
        for n in args:
            ax+=n
        return ax
    return sum

a = func(1,2,3,4,5,6)
print(a())

結果是:21

內部函數可以引用外部函數的參數和局部變量,當外部函數返回內部函數時,相關參數和變量都保存在返回的函數當中,這就是閉包。

當調用外部func函數的時候,每次調用都是返回一個新的的函數,即使傳值是一致的,也會不一樣。例子如下:

def func(*args):
    def sum():
        ax = 0
        for n in args:
            ax+=n
        return ax
    return sum

a1 = func(1,2,3,4,5,6)
a2 = func(1,2,3,4,5,6)

print(a1==a2)

結果返回是False。

但是如果print(a1()==a2())是True ,調用的值是一樣的!


def count():
    fs = []
    for i in range(1,5):
        def f():
            return i*i*i
        fs.append(f)
    return fs

f1,f2,f3,f4 = count()
print(f1())
print(f2())
print(f3())
print(f4())

結果是:

64
64
64
64

--------------------------------------------------------------

def count():
    def f(i):
        def func():
            return i*i
        return func
    fs = []
    for var in range(1,5):
        fs.append(f(var))
    return fs
f1,f2,f3,f4 = count()
print(f1())
print(f2())
print(f3())
print(f4())

結果是:

1
4
9
16

劃重點:返回函數不要應用任何循環變量,或者后面會發生改變的變量。

向AI問一下細節
推薦閱讀:
  1. Python 閉包
  2. lua 閉包

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

长垣县| 兰坪| 汪清县| 昌江| 西畴县| 汶川县| 芜湖县| 隆尧县| 工布江达县| 保靖县| 阿巴嘎旗| 沙田区| 瑞安市| 黄龙县| 太和县| 伊吾县| 柳河县| 德安县| 万源市| 广宗县| 乌拉特后旗| 当阳市| 定安县| 鸡泽县| 买车| 香港| 隆子县| 昆明市| 五指山市| 汝南县| 浦东新区| 南部县| 竹山县| 湘潭市| 阳东县| 靖宇县| 灌阳县| 响水县| 巴塘县| 金湖县| 札达县|