国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Python > 正文

Python裝飾器原理與用法分析

2020-02-22 23:56:54
字體:
供稿:網(wǎng)友

本文實(shí)例講述了Python裝飾器原理與用法。分享給大家供大家參考,具體如下:

1、裝飾器的本質(zhì)是函數(shù),主要用來裝飾其他函數(shù),也就是為其他函數(shù)添加附加功能

2、裝飾器的原則:

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

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

3、實(shí)現(xiàn)裝飾器的知識(shí)儲(chǔ)備

(1) Python中函數(shù)即‘變量'

a、變量在Python中的存儲(chǔ)

x='Tomwenxing'y=x

[說明]:

當(dāng)Python解釋器遇到語(yǔ)句x='Tomwenxing'時(shí),它主要完成了兩樣工作:

  1.在內(nèi)存中開辟了一片空間用來存儲(chǔ)字符串‘Tomwenxing'

  2.在內(nèi)存從創(chuàng)建了一個(gè)名為x的變量,并用它指向字符串‘Tomwenxing'所占據(jù)的內(nèi)存空間(可以理解為房間和房間號(hào)的關(guān)系)

而語(yǔ)句y=x意為將變量x對(duì)字符串的引用賦值給變量y,即在內(nèi)存中創(chuàng)建一個(gè)變量y,并使其指向變量x所指向的內(nèi)存空間

b、函數(shù)在Python中的存儲(chǔ)

def test():  pass

[說明]:

在Python中,函數(shù)的存儲(chǔ)和變量相似,以上面的函數(shù)為例,Python解釋其主要做兩件事:

  1.在內(nèi)存中開辟一個(gè)內(nèi)存空間,用來存儲(chǔ)函數(shù)代碼的字符串(本例中代碼只有一句:pass)

  2.在內(nèi)存中創(chuàng)建一個(gè)變量test,用來指向存儲(chǔ)函數(shù)代碼字符串的內(nèi)存空間(相當(dāng)于test=‘函數(shù)體')

因此說在Python中函數(shù)即變量

(2) 高階函數(shù)(下面兩個(gè)條件滿足任何一個(gè)即為高階函數(shù))

a、把一個(gè)函數(shù)名當(dāng)做實(shí)參傳遞給另外一個(gè)函數(shù)

[對(duì)裝飾器的影響]:達(dá)到“在不修改被裝飾函數(shù)源代碼的情況下為其添加功能”的效果

import timedef bar():  time.sleep(2)  print('in the bar')def test(func):  start_time=time.time()  func()  stop_time=time.time()  print('函數(shù)的運(yùn)行時(shí)間為:',stop_time-start_time)test(bar)

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

in the bar
函數(shù)的運(yùn)行時(shí)間為: 2.0021145343780518

b、返回值中包含函數(shù)名

[對(duì)裝飾器的影響]:達(dá)到“不改變函數(shù)的調(diào)用方式“的效果

import timedef bar():  time.sleep(3)  print('in the bar')def test2(func):  print('新添加的功能')  return funcbar=test2(bar)bar()

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

新添加的功能
in the bar

(3) 嵌套函數(shù):在一個(gè)函數(shù)體內(nèi)用def去聲明一個(gè)新的函數(shù)(不是調(diào)用)

def foo():  print('in the foo')  def bar(): #聲明一個(gè)新的函數(shù),而不是調(diào)用函數(shù)    print('in the bar')  bar()foo()            
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 岳阳县| 龙山县| 津南区| 安泽县| 宣化县| 巨野县| 南部县| 灵武市| 邹平县| 舟曲县| 黎川县| 比如县| 维西| 布尔津县| 东海县| 丹凤县| 鹤壁市| 通化县| 元氏县| 通山县| 竹山县| 江门市| 奉节县| 大埔县| 白银市| 蚌埠市| 新泰市| 阳东县| 米林县| 瑞丽市| 麻城市| 凭祥市| 文昌市| 木兰县| 屯门区| 石景山区| 邹城市| 吉木萨尔县| 手机| 鄂尔多斯市| 贡嘎县|