欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

之前就了解到了裝飾器, 但是就會(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


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


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

我的疑惑就是明明return 的是一個(gè)函數(shù)名,按道理來(lái)講,返回的就是一個(gè)函數(shù)地址?。∥依斫庥袉?wèn)題?隨后上網(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 funY1


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

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

# 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')

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

相關(guān)文章

  • Python多線程threading創(chuàng)建及使用方法解析

    Python多線程threading創(chuàng)建及使用方法解析

    這篇文章主要介紹了Python多線程threading創(chuàng)建及使用方法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • python實(shí)現(xiàn)控制臺(tái)輸出顏色

    python實(shí)現(xiàn)控制臺(tái)輸出顏色

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)控制臺(tái)輸出顏色,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • python 示例分享---邏輯推理編程解決八皇后

    python 示例分享---邏輯推理編程解決八皇后

    八皇后問(wèn)題,是一個(gè)古老而著名的問(wèn)題,是回溯算法的典型案例。該問(wèn)題是國(guó)際西洋棋棋手馬克斯·貝瑟爾于1848年提出:在8X8格的國(guó)際象棋上擺放八個(gè)皇后,使其不能互相攻擊,即任意兩個(gè)皇后都不能處于同一行、同一列或同一斜線上,問(wèn)有多少種擺法。
    2014-07-07
  • Python中等待5秒并暫停執(zhí)行的方法總結(jié)

    Python中等待5秒并暫停執(zhí)行的方法總結(jié)

    Python 具有各種功能和庫(kù)來(lái)創(chuàng)建交互式應(yīng)用程序,用戶(hù)可以在其中提供輸入和響應(yīng), 我們可以創(chuàng)建需要暫停應(yīng)用程序執(zhí)行的情況,本文主要和大家分享三個(gè)Python 中等待 5 秒并暫停執(zhí)行的方法,有需要的可以參考下
    2023-10-10
  • Python2和Python3讀取文本文件的區(qū)別及說(shuō)明

    Python2和Python3讀取文本文件的區(qū)別及說(shuō)明

    這篇文章主要介紹了Python2和Python3讀取文本文件的區(qū)別及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Python實(shí)現(xiàn)格式化輸出的實(shí)例詳解

    Python實(shí)現(xiàn)格式化輸出的實(shí)例詳解

    這篇文章主要為大家介紹了Python語(yǔ)法中實(shí)現(xiàn)格式化輸出的方法,本文通過(guò)幾個(gè)實(shí)例為大家進(jìn)行了詳細(xì)的講解,感興趣的小伙伴可以了解一下
    2022-08-08
  • 詳細(xì)探究Python中的字典容器

    詳細(xì)探究Python中的字典容器

    這篇文章主要介紹了Python中的字典容器,本文來(lái)自于IBM官方網(wǎng)站技術(shù)文檔,需要的朋友可以參考下
    2015-04-04
  • Python中的八大核心語(yǔ)句你知道幾個(gè)呢?

    Python中的八大核心語(yǔ)句你知道幾個(gè)呢?

    Python?是一種代表簡(jiǎn)單思想的語(yǔ)言,其語(yǔ)法相對(duì)簡(jiǎn)單,很容易上手。本文精心篩選了Python中的八大核心語(yǔ)句,快來(lái)看看你都掌握了幾個(gè)呢
    2023-02-02
  • python編程PyQt5創(chuàng)建按鈕及觸發(fā)點(diǎn)擊事件示例解析

    python編程PyQt5創(chuàng)建按鈕及觸發(fā)點(diǎn)擊事件示例解析

    這篇文章主要為大家介紹了python編程使用PyQt5如何創(chuàng)建按鈕及觸發(fā)點(diǎn)擊事件的示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-10-10
  • python中的turtle庫(kù)函數(shù)簡(jiǎn)單使用教程

    python中的turtle庫(kù)函數(shù)簡(jiǎn)單使用教程

    這篇文章主要介紹了python中的turtle庫(kù)函數(shù)簡(jiǎn)單使用教程。本文通過(guò)圖片的形式給大家展示的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2018-07-07

最新評(píng)論