麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發(fā) > Python > 正文

Python高級(jí)特性之閉包與裝飾器實(shí)例詳解

2024-09-09 19:02:31
字體:
供稿:網(wǎng)友

本文實(shí)例講述了Python高級(jí)特性之閉包與裝飾器。分享給大家供大家參考,具體如下:

閉包

1.函數(shù)參數(shù):

(1)函數(shù)名存放的是函數(shù)的地址
(2)函數(shù)名()存放的是函數(shù)內(nèi)的代碼
(3)函數(shù)名只是函數(shù)代碼空間的引用,當(dāng)函數(shù)名賦值給一個(gè)對(duì)象的時(shí)候,就是引用傳遞

def func01():  print("func01 is show")test = func01print(func01)print(test)test()

結(jié)果:

2.閉包:

(1)內(nèi)層函數(shù)可以訪問外層函數(shù)變量

(2)閉包就是一個(gè)嵌套定義的函數(shù),在外層運(yùn)行時(shí)才開始內(nèi)層函數(shù)的定義,然后將內(nèi)部函數(shù)的引用傳遞函數(shù)外的對(duì)象(閉包外層函數(shù)的返回值為內(nèi)層函數(shù)名)

(3)內(nèi)部函數(shù)和使用的外部函數(shù)提供的變量構(gòu)成的整體稱為閉包

def func_out(rate):  def func_in(money):    print(rate * money)  return func_inusa_money = func_out(0.7)usa_money(100)usa_money(200)

執(zhí)行結(jié)果:

裝飾器

裝飾器就是在不改變函數(shù)的原有代碼的前提下 給函數(shù)添加新的功能,裝飾器一般是一個(gè)閉包。

1.裝飾器:

# 在不改變函數(shù)的原有代碼的前提下 給函數(shù)添加新的功能def func_out(func):  def func_in():    print("驗(yàn)證")    func()  return func_in@func_outdef login():  print("登錄")# 有裝飾器 裝飾器下面正好是一個(gè)函數(shù)# login = func_out(login)  重點(diǎn)login()

如果@func_out裝飾器下剛好是一個(gè)login函數(shù),會(huì)執(zhí)行:

login = func_out(login)

所以會(huì)直接執(zhí)行func_out內(nèi)的代碼,func為原login,即指向原login函數(shù)的地址空間并且返回內(nèi)層函數(shù)名,即:

login = func_out(login) = func_in

所以login()的執(zhí)行結(jié)果為func_in(),即:

print('驗(yàn)證')func() # func指原login函數(shù)的地址

就實(shí)現(xiàn)了不改變?cè)瘮?shù)的情況下給函數(shù)添加新功能

執(zhí)行結(jié)果:

2.裝飾有返回指函數(shù):

def func_out(func):  def func_in():    # ret = func()    #  def login():    #    return 100    return func()  return func_in@func_outdef login():  return 100# login() ==> func_in()# func ==> 原始的loginf = login()print(f)

3.裝飾有參數(shù)函數(shù):

def func_out(func):  def func_in(a):    func(a)  return func_in@func_outdef login(a):  print(a)# login() ==> func_in()# func ==> 原始的loginlogin(10)

4.裝飾器通用版:

def func_out(func):  def func_in(*args,**kwargs):    return func(*args,**kwargs)  return func_in@func_outdef login(*args,**kwargs):  print(args)  print(kwargs)# login() ==> func_in()# func ==> 原始的loginlogin(10,20,age = "17",name="123")

5.類裝飾器:

class Foo(object):  def __init__(self, func):    self.func = func  def __call__(self):    print("驗(yàn)證")    self.func()@Foodef login():  print("登錄")# login = Foo(login)login()
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 777zyz色资源站在线观看 | 欧美日韩免费一区 | 羞羞答答影院 | 日本欧美一区二区三区在线播 | 懂色粉嫩av久婷啪 | 毛片在线免费播放 | 国产精品成人一区二区三区电影毛片 | 视频一区二区中文字幕 | 国产手机av在线 | 精品国产一区二区三区四区阿崩 | 天天干天天透 | 91精品国产777在线观看 | 亚洲一区二区三区精品在线观看 | 羞羞网站在线看 | xp123精品视频 | 亚洲成人激情av | 国产九九热 | 欧美亚洲国产一区二区三区 | 欧美成人一区免费视频 | 国产精品免费观看视频 | 精品乱码久久久久 | 黄色成人短视频 | 国产精品久久久网站 | 黄色网址在线免费播放 | 久久99精品久久久久久国产越南 | 人成久久 | 欧美性生活久久久 | 免费一级毛片免费播放 | 黄色片网站在线免费观看 | 91精品久久久久久久久网影视 | 免费观看又色又爽又黄的崩锅 | 成人性视频欧美一区二区三区 | 狠狠色噜噜狠狠狠米奇9999 | av在线播放免费观看 | 欧洲精品久久久 | 人人舔人人插 | 一级在线观看视频 | 免费视频xxxx | 国产精品中文在线 | 中文字幕涩涩久久乱小说 | 亚洲免费网站 |