日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python装饰器两层和三层区别_学习python的第十五天(函数的装饰器,两层装饰器和三层装饰器)...

發布時間:2025/3/15 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python装饰器两层和三层区别_学习python的第十五天(函数的装饰器,两层装饰器和三层装饰器)... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

06.01自我總結

一.裝飾器

1.函數裝飾圈的定義

函數裝飾器:一種裝飾函數的函數

2.個人理解兩層函數裝飾器

兩層函數裝飾器個人覺得他其實就是把需要裝飾的函數名丟入形參,然后用一個嵌套的函數對其頭尾進行添加程序,但是不能減少他的程序內容,他的原來程序不變只能增不能減少,然后返回裝飾好的子函數,再全局定義一個變量名與要裝飾的函數名相同名字,并且將裝飾后的函數調用賦予改變量.

1.簡單的例子(無參函數)

#有個函數f1

def f1():

print('nick machachong')

#我們要對齊裝飾使其輸出打印內容上下都加了'-'線

def f1_deco(f1): #第一步吧變量丟進去

def wrapper():

#print(50*'-') #我們加的內容

#print('nick machachong') #這個等同于f1()

#print(50*'-') #我們要加的內容

#這是我們需要的打印效果

pritn(50*'-')

f1()

print(50*'-')

return wrapper

f1 = f1_deco(f1) #前面的f1是變量f1,函數本是f1并未發生變化只是一個變量名接受了f1

f1()

?```

--------------------------------------------------

nick machachong

--------------------------------------------------

?```

#另外種寫法

@f1_deco

def f1():

print('nick machachong')

f1()

?```

--------------------------------------------------

nick machachong

--------------------------------------------------

?```

2.關于有參函數

#如函數

def sum(x,y):

print(x+y)

#我們要對齊裝飾使其輸出打印內容上下都加了'-'線

def sum_deco(sum):

def wrapper(x,y):

print("-")

sum(x,y)

return sum

sum() = sum_deco(sum)

sum(x,y)

#多個值

def sb(x,y,z=2,b=1):

print(x,y,z,b)

#把他進行封裝

def sb_deco(sb):

def wrapper(*args,**kwargs):

print('nick machachong')

sb(*args,**kwargs)

return wrapper

sb = sb_deco(sb)

sb(1,23,2,3)

3.對于有返回值的函數式

#有返回值

def sb(x,y,z=2,b=1):

return x,y,z,b

#對于返回值乘以3

def sb_deco(sb):

def wrapper(*args,**kwargs):

res = sb(*args,**kwargs)

res = list(res)

for a in range(len(res)):

res[a] = 3*res[a]

res = tuple(res)

return res

return wrapper

sb = sb_deco(sb)

print(sb(2,3,4,5))

4.裝飾圈模板

def sb(*args,**kwargs):

pass

#裝飾器模板

def sb_deco(sb):

def wrapper(*args,**kwargs):

#sb(*args,**kwargs)

res = sb(*args,**kwargs) #賦值的時候已經開始調用了所有沒必要在寫一步調用

return res

return wrapper

sb = sb_deco(sb)

sb(1,23,2,3,12,312,312,3,123)

3.對于三層裝飾器理解

#比如說一個函數為,我們對齊裝飾,打印內容前后上下加'-'

def sb():

print('i am sb')

#裝飾

def sb_deco(sb):

def wrapper():

print('-'*5)

sb()

print('-'*5)

return wrapper

#只時候我們加條件要區分是你輸入還是我輸入的

# 只時候我們加條件要區分是你輸入還是我輸入的, 我那邊聰明肯定不是sb

def sb_deco(sb):

def wrapper():

if user == 'you':

print('-' * 5)

sb()

print('-' * 5)

elif user == 'i':

print('-' * 5)

sb()

print('這是不可能的')

print('-' * 5)

return wrapper

#這時候我們導入的參數多了個user

def user(user):

def sb_deco(sb):

def wrapper():

if user == 'you':

print('-' * 5)

sb()

print('-' * 5)

elif user == 'i':

print('-' * 5)

sb()

print('這是不可能的')

print('-' * 5)

return wrapper

return sb_deco

@user('you') #其中@user('you') 相當于a =user('you') sb = a(sb)

def sb():

print('i am sb')

sb()

#他是對于輸入的值的一層裝飾,判斷他是拿來的

`

希望與廣大網友互動??

點此進行留言吧!

總結

以上是生活随笔為你收集整理的python装饰器两层和三层区别_学习python的第十五天(函数的装饰器,两层装饰器和三层装饰器)...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。