欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Python語法之裝飾器-創(chuàng)新互聯(lián)

  裝飾器的概念

創(chuàng)新互聯(lián)公司主營鹿邑網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,重慶APP軟件開發(fā),鹿邑h5微信小程序定制開發(fā)搭建,鹿邑網(wǎng)站營銷推廣歡迎鹿邑等地區(qū)企業(yè)咨詢

  裝飾器是 Python 的一個重要部分。簡單地說:就是用于拓展原來函數(shù)功能的一種函數(shù),目的是在不改變原函數(shù)名(或類名)的情況下,給函數(shù)增加新的功能。

  這個函數(shù)的特殊之處在于它的返回值也是一個函數(shù),這個函數(shù)是內(nèi)嵌 “原” 函數(shù)的函數(shù)。

  將函數(shù)作為參數(shù)傳給另一個函數(shù)

  def yanzheng():

  return "--- 正在驗(yàn)證 ---"

  def login(func):

  print(func())

  print("--- 正在登陸 ---")

  login(yanzheng)

  運(yùn)行結(jié)果:

  --- 正在驗(yàn)證 ---

  --- 正在登陸 ---

  寫代碼要遵循開放封閉原則,雖然在這個原則是用的面向?qū)ο箝_發(fā),但是也適用于函數(shù)式編程,簡單來說,它規(guī)定已經(jīng)實(shí)現(xiàn)的功能代碼不允許被修改,但可以被擴(kuò)展,即:

  封閉:已實(shí)現(xiàn)的功能代碼塊

  開放:對擴(kuò)展開發(fā)

  現(xiàn)在你已經(jīng)具備所有必需知識,接下來進(jìn)一步學(xué)習(xí)什么是真正的裝飾器。

  你的第一個裝飾器

  def func_out(func):

  def func_in():

  print("--- 正在驗(yàn)證 ---")

  func()

  return func_in

  @func_out

  def login():

  print("--- 正在登陸 ---")

  login()

  運(yùn)行結(jié)果:

  --- 正在驗(yàn)證 ---

  --- 正在登陸 ---

  @函數(shù)名稱 是 Python 的一種語法糖。簡而言之,語法糖就是程序語言中提供[奇技淫巧]的一種手段和方式而已。 通過這類方式編寫出來的代碼,即好看又好用,好似糖一般的語法。固美其名曰:語法糖

  裝飾器下面正好是個函數(shù),則默認(rèn)執(zhí)行:login = func_out(login)

  裝飾器的流程圖

  

  裝飾有返回值的函數(shù)

  上面的案例,被裝飾的 login() 函數(shù)并沒有返回值,那么接下來咱們看看有返回值的函數(shù)如何裝飾。

  首先,先看第一個案例:

  def func_out(func):

  def func_in():

  print("--- 正在驗(yàn)證 ---")

  func()

  return func_in

  @func_out

  def login():

  return "--- 正在登陸 ---"

  result = login()

  print(result)

  運(yùn)行結(jié)果:

  --- 正在驗(yàn)證 ---

  None

  思考一下,為什么我調(diào)用 login() 函數(shù),并且使用 result 變量來接收返回值,為什么結(jié)果是 None 呢?

  如果想不明白,就看看第二個案例:

  def func_out(func):

  def func_in():

  print("--- 正在驗(yàn)證 ---")

  data = func()

  return data

  return func_in

  @func_out

  def login():

  return "--- 正在登陸 ---"

  result = login()

  print(result)

  運(yùn)行結(jié)果:

  --- 正在驗(yàn)證 ---

  --- 正在登陸 ---

  大家仔細(xì)觀察代碼,這兩個案例有哪些不同?

  發(fā)現(xiàn)了嗎?我在 func_in() 函數(shù)的里面多寫了兩句代碼:

  1、當(dāng)我們調(diào)用被裝飾的 login() 函數(shù)時,實(shí)際執(zhí)行的是 func_in() 函數(shù)的代碼,此時會調(diào)用 print() 函數(shù)打印 "--- 正在驗(yàn)證 ---"。 鄭州人流醫(yī)院 http://rl.zyfuke.com/

  2、代碼執(zhí)行到 data = func() 時,會先執(zhí)行右側(cè)的 func() 函數(shù),而這個函數(shù)是原始的 login() 函數(shù),所以會 return 返回一個值,此時這個值被等號左側(cè)的 data 變量接收。

  3、代碼執(zhí)行到 return data,此時會將 data 值返回更上一層,而這個值被 result 變量接收。

  4、最終打印 result 變量就輸出了原始 login() 函數(shù)的值。

  在這里最需要注意的就是 return 返回?cái)?shù)據(jù),只能返回一層函數(shù),多層時,就需要在上層同時使用 return。

  裝飾有參數(shù)的函數(shù)

  demo1:

  def func_out(func):

  def func_in():

  func()

  return func_in

  def login(a):

  prin

  print(a)

  login(10)

  運(yùn)行結(jié)果:

  10

  demo2:

  def func_out(func):

  def func_in():

  func()

  return func_in

  @func_out

  def login(a):

  print(a)

  login(10)

  運(yùn)行結(jié)果:

  TypeError: func_in() takes 0 positional arguments but 1 was given

  類型錯誤:func_in()接受0個位置參數(shù),但給出了1個

  demo3:

  def func_out(func):

  def func_in(data):

  func(data)

  return func_in

  @func_out

  def login(a):

  print(a)

  login(10)

  運(yùn)行結(jié)果:

  10

  demo4:

  def func_out(func):

  def func_in(*args,**kwargs):

  func(*args,**kwargs)

  return func_in

  @func_out

  def login(*args,**kwargs):

  print(args)

  print(kwargs)

  login(10,20,c=1,b=2)

  運(yùn)行結(jié)果:

  (10, 20)

  {'c': 1, 'b': 2}

  總結(jié)

  裝飾器函數(shù)只有一個參數(shù)就是被裝飾的函數(shù)的引用

  裝飾器能夠?qū)⒁粋€函數(shù)的功能在不修改代碼的情況下進(jìn)行擴(kuò)展

  在函數(shù)定義的上方@裝飾器函數(shù)名 即可直接使用裝飾器對下面的函數(shù)進(jìn)行裝飾

本文標(biāo)題:Python語法之裝飾器-創(chuàng)新互聯(lián)
本文URL:http://aaarwkj.com/article34/phpse.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、用戶體驗(yàn)、全網(wǎng)營銷推廣網(wǎng)站維護(hù)、網(wǎng)站策劃、網(wǎng)站排名

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)
欧美一区二区三区四区久久| 超碰免费在线公开97| 国产精品久久久久久老熟女| 麻豆国产原创av色哟哟| 国产麻豆三级在线观看| 亚洲国产精品高清久久| 天美传媒剧国产在线观看| 亚洲欧美综合精品久久成人| 亚洲一区有码在线观看| 日本一区二区最新免费| 国产精品成人免费久久黄| 日本欧美亚洲一区二区三区| 免费欧美大片在线观看高清| 国产免费很黄很色视频| 精品久久激情中文字幕| 可以免费看的日韩黄色| 日本亚洲美丽少妇天堂| 国产免费成人在线视频| 一区二区三区日韩激情| 日本在线免费观看91| 熟女中文字幕亚洲一区二区| 蜜臀av中文字幕在线| 91午夜福利视频在线观看| 久久国产三级久久久久久| 国产午夜精品自拍视频| 99精品热这里只有精品| 暖暖免费中文高清日本三区| av影片免费网址大全| 色一区欧美一区亚洲一区| 日本一区二区精品视频| 成人亚洲精品一区二区三区| 中文字幕人妻出轨一区二区| 91伊人久热精品午夜福利| 日本一区二区电影在线看| 欧美看黄网站在线观看| 中国人妻一区二区三区| 成熟人妻中文字幕在线看| 精品亚洲国产成人av| 免费黄色一区二区三区| 国产一区二区精品日韩| 日韩精品在线观看你懂的|