基於閉包的裝飾器

2021-10-06 22:00:21 字數 897 閱讀 5098

# 一、裝飾器,在不改變原有**的基礎上增加新的功能

# 閉包三個條件 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 ...