最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2017年09月29日 15:03:20   作者:又見阿郎  
這篇文章主要和大家一起深入淺出的學(xué)習(xí)python裝飾器的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下

之前就了解到了裝飾器, 但是就會點皮毛, 而且對其調(diào)用方式感到迷茫,正好現(xiàn)在的項目我想優(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


@timeif
def foo(arg):
  print("in foo() %s" % (arg))


if __name__ == '__main__':
  foo(" Hello ") # 表示執(zhí)行foo函數(shù)....

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

# coding=utf-8
# 帶參數(shù)的函數(shù) 返回一個函數(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 funY1


if __name__ == '__main__':
  # print(funX(5)()) # 調(diào)用有參數(shù)的嵌套函數(shù)...
  
  print(funX1()()) # 調(diào)用無參數(shù)的嵌套函數(shù)...

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

# coding=utf-8
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


# @timeif
def foo(arg):
  print("in foo() %s" % (arg))


if __name__ == '__main__':
  timeif(foo)(' Hello')

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python機器學(xué)習(xí)之KNN分類算法

    python機器學(xué)習(xí)之KNN分類算法

    這篇文章主要為大家詳細介紹了python機器學(xué)習(xí)之KNN分類算法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • 基于Django的樂觀鎖與悲觀鎖解決訂單并發(fā)問題詳解

    基于Django的樂觀鎖與悲觀鎖解決訂單并發(fā)問題詳解

    這篇文章主要介紹了基于Django的樂觀鎖與悲觀鎖解決訂單并發(fā)問題詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-07-07
  • 將Python文件打包成.EXE可執(zhí)行文件的方法

    將Python文件打包成.EXE可執(zhí)行文件的方法

    目前有好幾種方法可以將python文件打包成exe應(yīng)用程序文件,例如py2exe,pyinstaller等,比較下來,還是覺得pyinstaller使用起來比較簡單。
    2019-08-08
  • python創(chuàng)建Flask Talisman應(yīng)用程序的步驟詳解

    python創(chuàng)建Flask Talisman應(yīng)用程序的步驟詳解

    Flask是一個功能強大的Web框架,主要用于使用Python語言開發(fā)有趣的Web應(yīng)用程序,Talisman基本上是一個Flask擴展,用于添加HTTP安全標頭我們的Flask應(yīng)用程序易于實施,本文就給大家講講帶Talisman的Flask安全性,需要的朋友可以參考下
    2023-09-09
  • python實現(xiàn)跳表SkipList的示例代碼

    python實現(xiàn)跳表SkipList的示例代碼

    這篇文章主要介紹了python實現(xiàn)跳表SkipList的示例代碼,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-07-07
  • 用 Python 制作地球儀的方法

    用 Python 制作地球儀的方法

    這篇文章主要介紹了如何用 Python 制作地球儀,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考即將價值,需要的朋友可以參考下
    2020-04-04
  • 使用OpenCV-python3實現(xiàn)滑動條更新圖像的Canny邊緣檢測功能

    使用OpenCV-python3實現(xiàn)滑動條更新圖像的Canny邊緣檢測功能

    這篇文章主要介紹了使用OpenCV-python3實現(xiàn)滑動條更新圖像的Canny邊緣檢測功能,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-12-12
  • Python實現(xiàn)批量下載文件的示例代碼

    Python實現(xiàn)批量下載文件的示例代碼

    下載文件是我們在日常工作中常常要做的一件事情,當(dāng)我們需要從互聯(lián)網(wǎng)上批量下載大量文件時,手動一個一個去下載顯然不夠高效,所以本文為大家介紹一下如何利用python批量下載文件吧
    2023-11-11
  • 解決Python調(diào)用df.to_csv()出現(xiàn)中文亂碼的問題

    解決Python調(diào)用df.to_csv()出現(xiàn)中文亂碼的問題

    在Python使用df.to_csv()時,若出現(xiàn)中文亂碼,可通過加入?yún)?shù)encoding="utf_8_sig"解決,"utf-8"編碼不包含BOM,直接處理文件時會將BOM誤讀為內(nèi)容;而"utf_8_sig"會識別并處理BOM,避免亂碼,此方法為實踐經(jīng)驗,供參考
    2024-09-09
  • java中的控制結(jié)構(gòu)(if,循環(huán))詳解

    java中的控制結(jié)構(gòu)(if,循環(huán))詳解

    這篇文章簡單地介紹了java中的控制結(jié)構(gòu)(if,循環(huán))文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,下面我們來學(xué)習(xí)下吧
    2019-06-06

最新評論

建湖县| 濉溪县| 正阳县| 浦北县| 徐州市| 尖扎县| 宝应县| 益阳市| 万宁市| 乌拉特后旗| 鹤山市| 海丰县| 栾川县| 南丹县| 台南市| 兰西县| 买车| 子洲县| 凤凰县| 凤翔县| 华安县| 多伦县| 白河县| 淮阳县| 弥渡县| 阿合奇县| 盐城市| 阜新市| 福州市| 九江市| 博兴县| 西平县| 磴口县| 彭州市| 根河市| 洪泽县| 柳州市| 卓尼县| 蕲春县| 吐鲁番市| 巩留县|