函式物件 閉包

2021-08-15 14:47:33 字數 1158 閱讀 4403

python一切皆物件,函式也可以看成是乙個函式物件。函式將作為乙個返回物件在另乙個函式中返回。

def

calc

(a, b):

c = a + b

return c

res = calc(10, 20)

print(res)

乙個內部的函式引用了外部函式的變數,這種語法結構就形成了閉包

def

calc_test

(*args):

defsum

(): result = 0

for x in args:

result += x

return result

return sum # 返回的是函式物件

fun = calc_test(10, 20)

print(fun())

當某乙個函式被當成物件進行返回時,並且攜帶了外部函式的變數,這種語法結構會形成乙個閉包。

1>閉包函式內必須有內嵌的函式;

2>內嵌函式中必須引用上一層函式的變數,比如區域性變數或者形參;

3>閉包函式必須返回內嵌函式物件;

閉包整體上和類物件相似,都是基於對功能和邏輯的封裝及重用。可以將閉包函式理解為乙個唯讀的物件,物件返回的是乙個功能介面,而不再是返回乙個最終的資料。

def

counter

(): count = [0] # 閉包環境中,count可以理解為外部變數(環境變數)

defadd

():# 內嵌函式對於外部變數的操作,只能進行引用,而不能對外部變數賦值。

count[0] = count[0] + 1

return count[0]

return add

count = counter()

print count()

print count()

print count()

303012

3

函式物件與閉包

函式物件指的是函式可以被當做 資料 來處理 1.函式可以被引用 def add x,y return x y func add func 1,2 32.函式可以當做引數傳遞 def foo x,y,func return func x,y foo 1,2,add 33.函式可以當做返回值使用 傳參的...

函式物件和閉包

1.引用 func f1 print f1 f1 print func func func 2.當作容器類元素 lt f1,1,2,3 print lt 0 lt 0 print f1 f1 lt 0 3.當作函式引數 def f2 f2 f1 print f2 f1 f2 f1 f2 f1 f2 ...

python 閉包函式 python函式物件和閉包

一 函式物件 函式物件指的是函式可以被當做 資料 來處理,具體可以分為四個方面的使用,我們如下 1.1 函式可以被引用 def add x,y return x y func add func 1,2 1.2 函式可以作為容器型別的元素 dic dicdic add 1.3 函式可以作為引數傳入另外...