# 一、裝飾器,在不改變原有**的基礎上增加新的功能
# 閉包三個條件 1、巢狀函式 2、內層函式呼叫外部函式的變數 3、外層函式返回內層函式名
# 這裡將函式作為引數傳遞給另乙個函式
defout_func
(func)
:def
yanzheng()
:# 這裡是內層函式呼叫了外層函式的變數
func(
)print
('———正在驗證———'
)# 這裡是外層函式返回了內層函式名
return yanzheng
# 裝飾器,@函式名,不要加括號,語法糖
@out_func
deflogin()
:print
('———正在登陸———'
)login(
)# 二、有返回值的裝飾器使用,要明白指標指向的記憶體位址變化
defperson
(func)
:def
head
(*args,
**kwargs)
: func(
*args,
**kwargs)
print
('這是我的腦袋'
)return head
@person # 這裡相當於foot = person(foot)
deffoot
(*args,
**kwargs)
:print
(args)
print
(kwargs)
print
('這是我的腳'
)foot(1,
2,3, a=
6, b=
9)
裝飾器,閉包。
外部函式outter def outter a 10 a為inner的外部作用域 內部函式inner def inner print a return inner outter 直接呼叫inner 輸出為10如果在內部函式inner中,有對外部作用域的乙個引用 a 10 那麼內部函式就是乙個閉包。在...
裝飾器與閉包
閉包 內層函式呼叫外層函式的引數,並且返回內層函式,叫做閉包。裝飾器 是裝飾器的符號 裝飾器是對閉包的一種利用,內層函式呼叫外層函式的引數,並且返回內層函式,叫做閉包,把呼叫的引數,換成函式,就是裝飾器,因為python中,函式也是當做物件,從而有裝飾器這一種特殊的用法。有引數的裝飾器就是在外面一層...
閉包和裝飾器
叫什麼 閉包有什麼用 跟函式相對可以把外層函式的引數保留下來 怎麼寫 def 外層函式 引數 def 內層函式 pass return 內層函式 心法 兩個函式的巢狀,外層函式返回內層函式的引用,外層函式必須有引數func 裝飾前的test,call fun 三者引數一樣的 def set fun ...