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

首頁 > 編程 > Python > 正文

深入淺出學(xué)習(xí)python裝飾器

2020-01-04 16:32:58
字體:
供稿:網(wǎng)友

之前就了解到了裝飾器, 但是就會(huì)點(diǎn)皮毛, 而且對(duì)其調(diào)用方式感到迷茫,正好現(xiàn)在的項(xiàng)目我想優(yōu)化,就想到了用裝飾器, 因此深入研究了下裝飾器.

先看下代碼:

import time# 將函數(shù)作為參數(shù)傳入到此方法....def timeif(func):  def wrapper(arg):    print("in wrapper() %s" % (arg))    start = time.clock()    func(arg)    end = time.clock()    print("used: %s %s" % (end-start, arg))  return wrapper@timeifdef foo(arg):  print("in foo() %s" % (arg))if __name__ == '__main__':  foo(" Hello ") # 表示執(zhí)行foo函數(shù)....

我的疑惑就是明明return 的是一個(gè)函數(shù)名,按道理來講,返回的就是一個(gè)函數(shù)地址啊!我理解有問題?隨后上網(wǎng)查資料,又是閉包....但是我個(gè)人對(duì)它不感冒,隨后自己分析,總結(jié)出了一段程序,看完你就知道原因了.
程序:

# coding=utf-8# 帶參數(shù)的函數(shù) 返回一個(gè)函數(shù)地址就行....def funX(x):  def funY():    return x  return funY# 不帶參數(shù)的函數(shù)....def funX1():  print("調(diào)用函數(shù)funX1")  def funY1():    print("調(diào)用函數(shù)funY1")  return funY1if __name__ == '__main__':  # print(funX(5)()) # 調(diào)用有參數(shù)的嵌套函數(shù)...    print(funX1()()) # 調(diào)用無參數(shù)的嵌套函數(shù)...

這和我們的裝飾器不像嗎?這就是我們的裝飾器!因此,我們可以按照上面的程序來理解,也就是說它是首先確定參數(shù)個(gè)數(shù),隨后分別傳入的,下面,我們來改寫代碼:

# coding=utf-8import time# 將函數(shù)作為參數(shù)傳入到此方法....def timeif(func):  def wrapper(arg):    print("in wrapper() %s" % (arg))    start = time.clock()    func(arg)    end = time.clock()    print("used: %s %s" % (end-start, arg))  return wrapper# @timeifdef foo(arg):  print("in foo() %s" % (arg))if __name__ == '__main__':  timeif(foo)(' Hello')

python,裝飾器

python,裝飾器

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到python教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 苏尼特左旗| 榆树市| 莱芜市| 建湖县| 兰考县| 防城港市| 广西| 九江市| 礼泉县| 澜沧| 纳雍县| 长汀县| 昆山市| 商都县| 辛集市| 米林县| 临洮县| 浪卡子县| 禹城市| 绍兴市| 沁水县| 喀什市| 明水县| 毕节市| 平陆县| 湖南省| 佛坪县| 沙河市| 安吉县| 南阳市| 息烽县| 桑日县| 察雅县| 志丹县| 六安市| 仲巴县| 延安市| 通海县| 曲周县| 通许县| 石台县|