Python基礎入門(四)

2021-07-31 04:27:10 字數 1623 閱讀 5630

函式即變數高階函式+巢狀函式》裝飾器

裝飾器:

定義:本質就是函式,(裝飾其他函式)就是為其他函式新增附加功能

1.不能修改被裝飾函式的源**

2.不能修改被裝飾函式的呼叫方式

高階函式

+巢狀函式

把乙個函式名當做實參傳給另外乙個函式

返回值中包含函式名

(不修改函式的呼叫方式

)

#####

沒有修改被裝飾函式的源**但是改變了函式呼叫方式

def login():

print("######test1#######")

def auth(func):

func()

print("######auth#######")

c = auth(login)

#######

修改被裝飾函式的源**

+沒有修改被裝飾函式的呼叫方式

def login():

print("######test1#######")

def auth(func):

def funnew():

func()

print("######auth#######")

return funnew

login = auth(login)

login()

####等價於:

def auth(func):

def funnew():

func()

print("######auth#######")

return funnew

@auth #等價於login = auth(login)

def login():

print("######test1#######")

login()

#

以上是借助

python的@

語法,把

decorator

置於函式的定義處

#

如果說有多個函式需要同乙個

@auth

,有的被裝飾的函式帶有引數,而有的函式卻沒有引數?

def auth(func):

def funnew(*args,**kwargs):

func(*args,**kwargs)

print("######auth#######")

return funnew

@auth #等價於login = auth(login)

def login():

print("######test1#######")

@auth

def login1(name,age):

print("######login1#######",name,age)

login()

login1("lili",23)

python基礎入門(四)

呼叫上一級非全域性變數用 nonlocal 函式的作用域只跟函式宣告時定義的作用域有關,跟函式的呼叫位置無任何關係 name 111 deffoo name 222 defbar name 333 print name deftt print name return tt return bar r1...

html入門基礎(四)

內部樣式表 type text css 選擇器style head 外部樣式表 href css檔案的路徑 type text css rel stylesheet head 行內式 內聯式 標籤名 style 屬性1 屬性值1 屬性2 屬性值2 屬性3 屬性值3 內容 標籤名 塊級元素 block...

python入門記錄 python入門基礎習題記錄

執行python指令碼的兩種方式 1 配置好環境變數,python py 2 python進入python直譯器,直接執行 簡述位 位元組關係 1 1位元組 byte 8位 bit 簡述ascii,unicode,utf 8,gbk關係 1 ascii 最早的一種編碼方式,用乙個位元組也就是8位來表...