python3 內部函式 閉包 裝飾器示例

2021-10-22 19:26:37 字數 1267 閱讀 9625

# 內部函式: 就是在函式中定義的函式

defouter()

:def

inner()

:print

("inner 函式"

)print

(inner,

id(inner)

)return inner

f = outer(

)print

(f,id

(f))f()

# 閉包

defouter

(n):

definner()

:print

(n)# 對於 inner 函式來說, n 是外部變數

print

("inner 函式"

)return inner

f = outer(10)

f()# f 函式就叫閉包

# 閉包就是含有外部變數的函式

deffoo()

:print

("千鋒教育"

)def

outer

(n):

definner()

:print

("*"*10

) n(

)print

("*"*10

)return inner

# 開放封閉原則

# 開放: 開發程式允許增加功能

# 封閉: 執行隨意更改原來的**結構和定義

foo = outer(foo)

# inner

print

(foo)

foo(

)# 語法糖# 定義裝飾器

defouter

(func)

:def

inner

(*args,

**kwargs)

:print

("*"*10

)

r = func(

*args,

**kwargs)

print

("*"*10

)return r

return inner

@outer

deffoo

(a, c=10)

:print

("千鋒教育 %s %s"

%(a, c)

)return

'hello'

r = foo(13,

20)print

(r)

Python3 閉包 裝飾器

首先要理解在python中一切皆物件,函式也是物件。多層函式巢狀,函式裡面還有定義函式,一般是兩個 往往內層函式會用到外層函式的變數,把內層函式以及外部函式的變數當成乙個特殊的物件,這就是閉包。閉包比物件導向更純淨 更輕量,既有資料又有執行資料的 比普通函式功能更強大,不僅有 還有資料。def fu...

Python函式閉包裝飾器

x 2222 print x def func1 x 65842 deffunc2 x 65412 print x func2 func1 print x 2222 65412 2222 global 呼叫全域性變數 x 8888 deffunc1 deffunc2 global x x 10000...

python函式篇 閉包 裝飾器

作用 使函式外部能訪問函式內部區域性變數,且當函式完後依然可以儲存該變數 特徵 函式內部巢狀,內部函式訪問外部函式區域性變數,外部函式返回內部函式位址 或者直接呼叫內部函式 defa num 4deff print num return f b a b 或者 defa num 4deff print...