溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python中的裝飾器詳細介紹

發(fā)布時間:2020-05-22 16:25:55 來源:億速云 閱讀:235 作者:鴿子 欄目:編程語言

  Python 裝飾器

  一、裝飾器定義

  二、裝飾器知識儲備

  三、高階函數(shù)

  1.高階函數(shù)定義:

  2.高階函數(shù)的示范

  3.高階函數(shù)的總結(jié)

  四、函數(shù)嵌套

  五、閉包

  Python 裝飾器

  一、裝飾器定義

  裝飾器本質(zhì)就是函數(shù),功能是為其他函數(shù)添加附加功能

  原則:

  1)不修改被修飾函數(shù)的源代碼

  2)不修改被修飾函數(shù)的調(diào)用方式

  二、裝飾器知識儲備

  裝飾器 = 高階函數(shù) + 函數(shù)嵌套 + 閉包

  三、高階函數(shù)

  1.高階函數(shù)定義:

  函數(shù)接受的參數(shù)是一個函數(shù)名

  函數(shù)的返回值是一個函數(shù)名

  滿足上述條件任意一個都可以稱之為高階函數(shù)

  2.高階函數(shù)的示范

  把函數(shù)當做參數(shù)傳給高階函數(shù)

  import time

  def foo():

  time.sleep(1)

  print('你好劉力菲')

  def test(func):

  print(func)

  start_time = time.time()

  func()

  stop_time = time.time()

  print('函數(shù)運行時間是 %s' % (stop_time - start_time))

  foo()鄭州人流多少錢 http://www.hnmt120.com/

  test(foo)

  可以看到foo函數(shù)又在test函數(shù)中執(zhí)行了一遍

  3.高階函數(shù)的總結(jié)

  函數(shù)接受的參數(shù)是一個函數(shù)名

   作用:在不修改函數(shù)源代碼的前提下,為函數(shù)添加新功能

   不足:會改變函數(shù)的調(diào)用方式

  函數(shù)的返回值是一個函數(shù)名

   作用:不修改函數(shù)的調(diào)用方式

   不足:不能添加新功能

  四、函數(shù)嵌套

  函數(shù)嵌套就是在函數(shù)里面在定義函數(shù)

  def func():

  pass

  def func1():

  pass

  def func2():

  pass

  pass

  五、閉包

  在一個外函數(shù)中定義了一個內(nèi)函數(shù),內(nèi)函數(shù)里運用了外函數(shù)的臨時變量,并且外函數(shù)的返回值是內(nèi)函數(shù)的引用。這樣就構(gòu)成了一個閉包

  例子

  def func(a):

  aa=11

  def func1():

  c=a+aa

  print(c)

  return func1

  使用閉包的過程中,一旦外函數(shù)被調(diào)用一次返回了內(nèi)函數(shù)的引用,雖然每次調(diào)用內(nèi)函數(shù),是開啟一個函數(shù)執(zhí)行過后消亡,但是閉包變量實際上只有一份,每次開啟內(nèi)函數(shù)都在使用同一份閉包變量

  def outer(x):

  def inner(y):

  nonlocal x

  x+=y

  return x

  return inner

  a=outer(100)

  print(a(50))

  print(a(100))


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI