def
info()
:print
('這是學生資訊'
)# info()
a = info
print(id
(a))
print(id
(info))a(
)
展示:
4009632
4009632
這是學生資訊
def
info()
:return
'小王'
defsuccess()
:print
('返回值函式'
)def
printinfo
(func)
:'''
:param func:需要傳遞的是乙個函式,真正傳遞的是函式的引用
:return:
'''name = func(
)print
(name)
return success
ret_func = printinfo(info)
ret_func(
)
注意點:
函式作為返回值,函式作為引數,不能新增(),如果新增()作為的就是函式的呼叫了
def
out(k,b)
:def
fun(x)
: y = k*x +b
print
(x,y)
return fun
ret = out(10,
10)print
(ret)
ret(
10)
注意點:
在函式的內部再定義了乙個函式,並且這個函式用到了外面這個函式的變數,那麼這個函式以及用到的一些變數稱之為閉包
1、python3 的寫法
a =
100def
outer
(num=2)
:def
inner()
:nonlocal num
num = num +
1print
('將引數加1'
,num+1)
return inner
ret = outer(
)ret(
)
legb原則:
l local 本地作用域(區域性變數)
e enclosure 閉包所在作用域
g global 全域性變數
b built-in 內建
2、 python2的寫法
def
outer1
(num=2)
: list_new =
[num]
definner()
: list_new[0]
+=1print
('將引數加1'
,num+1)
return inner
寫**遵循開放封閉原則
已經實現功能的封閉,已經實現功能的**不允許被修改,但是可以被擴充套件
def
authtificate
(func)
:'''
:param func: 需要進行登入驗證的函式的引用
:return:
'''definner()
:if'使用者是登入'
:print
('已經經過裝飾器了'
) func(
)else
:print
('使用者沒有登入'
)return inner
@authtificate
defpay()
:# print('驗證登入')
# authtificate()
print
('付款'
)def
chage_password()
:# print('驗證登入')
# authtificate()
print
('修改密碼'
)
def
(func)
:print
('進入裝飾器'
)def
inner()
:print
('真正執行裝飾'
) func(
)print
('裝飾已經完成'
)return inner
definfo()
:print
('這是被裝飾的函式'
)print
('#######################'
)info(
)# ret()
python三大神器 裝飾器
裝飾器 decorator 能增強now 函式的功能,比如,在函式呼叫前後自動列印日誌,但又不希望修改now 函式的定義,這種在 執行期間動態增加功能的方式,稱之為。本質上,decorator就是乙個返回函式的高階函式。所以,我們要定義乙個能列印購物的decorator,可以定義如下 def inn...
搞定三大神器之 Python 裝飾器
學會 python 裝飾器 裝飾器,幾乎各大python框架中都能看到它的身影,足以表明它的價值!它有動態改變函式或類功能的魔力!本專題的目錄 學會 python 裝飾器 1 什麼是裝飾器 2 裝飾器的結構 3 為什麼要這樣 4 裝飾乙個函式 5 裝飾乙個類 6 裝飾器層疊 7 溫馨提醒 總結1 什...
python三大神器裝飾器 Python 裝飾器
裝飾器 本質是函式,用於裝飾其他函式,為其他函式新增附加功能 原則 1.不能比修改被裝飾的函式的 2.不能修改被裝飾的函式的呼叫方式 import time def timmer func def warpper args,kwargs start time time.time func stop ...