# 內部函式: 就是在函式中定義的函式
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...