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

python裝飾器使用方法實(shí)例

 更新時(shí)間:2013年11月21日 14:59:30   作者:  
這篇文章主要介紹了python裝飾器的使用方法,大家參考使用

什么是python的裝飾器?

網(wǎng)絡(luò)上的定義:
裝飾器就是一函數(shù),用來包裝函數(shù)的函數(shù),用來修飾原函數(shù),將其重新賦值給原來的標(biāo)識(shí)符,并永久的喪失原函數(shù)的引用。

最能說明裝飾器的例子如下:

復(fù)制代碼 代碼如下:

#-*- coding: UTF-8 -*-
import time

def foo():
    print 'in foo()'

# 定義一個(gè)計(jì)時(shí)器,傳入一個(gè),并返回另一個(gè)附加了計(jì)時(shí)功能的方法
def timeit(func):

    # 定義一個(gè)內(nèi)嵌的包裝函數(shù),給傳入的函數(shù)加上計(jì)時(shí)功能的包裝
    def wrapper():
        start = time.clock()
        func()
        end =time.clock()
        print 'used:', end - start

    # 將包裝后的函數(shù)返回
    return wrapper

foo = timeit(foo)
foo()

python中提供了一個(gè)@符號(hào)的語法糖,用來簡(jiǎn)化上面的代碼,他們的作用一樣

復(fù)制代碼 代碼如下:

import time

def timeit(func):
    def wrapper():
        start = time.clock()
        func()
        end =time.clock()
        print 'used:', end - start
    return wrapper

@timeit
def foo():
    print 'in foo()'

foo()

這2段的代碼是一樣的,等價(jià)的。

內(nèi)置的3個(gè)裝飾器,他們分別是staticmethod,classmethod,property,他們的作用是分別把類中定義的方法變成靜態(tài)方法,類方法和屬性,如下:

復(fù)制代碼 代碼如下:

class Rabbit(object):

    def __init__(self, name):
        self._name = name

    @staticmethod
    def newRabbit(name):
        return Rabbit(name)

    @classmethod
    def newRabbit2(cls):
        return Rabbit('')

    @property
    def name(self):
        return self._name

裝飾器的嵌套:
就一個(gè)規(guī)律:嵌套的順序和代碼的順序是相反的。
也是來看一個(gè)例子:

復(fù)制代碼 代碼如下:

#!/usr/bin/python
# -*- coding: utf-8 -*-

def makebold(fn):
    def wrapped():
        return "<b>" + fn() + "</b>"
    return wrapped

def makeitalic(fn):
    def wrapped():
        return "<i>" + fn() + "</i>"
    return wrapped

@makebold
@makeitalic
def hello():
    return "hello world"

print hello()

返回的結(jié)果是:
<b><i>hello world</i></b>
為什么是這個(gè)結(jié)果呢?
1.首先hello函數(shù)經(jīng)過makeitalic 函數(shù)的裝飾,變成了這個(gè)結(jié)果<i>hello world</i>
2.然后再經(jīng)過makebold函數(shù)的裝飾,變成了<b><i>hello world</i></b>,這個(gè)理解起來很簡(jiǎn)單。

相關(guān)文章

  • Django實(shí)現(xiàn)基于類的分頁功能

    Django實(shí)現(xiàn)基于類的分頁功能

    這篇文章主要為大家詳細(xì)介紹了Django實(shí)現(xiàn)基于類的分頁功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • python函數(shù)裝飾器用法實(shí)例詳解

    python函數(shù)裝飾器用法實(shí)例詳解

    這篇文章主要介紹了python函數(shù)裝飾器用法,以實(shí)例形式較為詳細(xì)的分析了Python函數(shù)裝飾器的常見使用技巧,需要的朋友可以參考下
    2015-06-06
  • 學(xué)習(xí)python (1)

    學(xué)習(xí)python (1)

    學(xué)習(xí)python (1)...
    2006-10-10
  • python-httpx的具體使用

    python-httpx的具體使用

    HTTPX是Python3的功能齊全的HTTP客戶端,它提供同步和異步API,本文主要介紹了python-httpx的具體使用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • python發(fā)送郵件功能實(shí)現(xiàn)代碼

    python發(fā)送郵件功能實(shí)現(xiàn)代碼

    這篇文章主要為大家詳細(xì)介紹了python發(fā)送郵件功能實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-07-07
  • Python讀取CSV文件的四種方法總結(jié)

    Python讀取CSV文件的四種方法總結(jié)

    這篇文章主要介紹了Python讀取CSV文件的四種方法, 使用 csv 模塊,使用 numpy 庫,使用pandas庫,使用標(biāo)準(zhǔn)庫中的 csv 模塊這四種方法,文章通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07
  • 詳解Python3中的多重繼承和混入類

    詳解Python3中的多重繼承和混入類

    Python原生支持多重繼承,這使得我們可以從多個(gè)父類中繼承屬性和方法,在本文中,我們將介紹Python中多重繼承的概念,并討論在實(shí)際情況下可能遇到的坑,我們還將討論如何使用混入類來避免這些問題,需要的朋友可以參考下
    2023-05-05
  • jupyter?notebook內(nèi)核啟動(dòng)失敗問題及解決方法

    jupyter?notebook內(nèi)核啟動(dòng)失敗問題及解決方法

    這篇文章主要介紹了解決jupyter?notebook內(nèi)核啟動(dòng)失敗問題,本文給大家介紹了問題原因分析及解決方案,圖文并茂的形式給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • Python中為什么要用self探討

    Python中為什么要用self探討

    這篇文章主要介紹了Python中為什么要用self探討,本文講解了Python要self的理由、為何Python給self賦值而你不必給self賦值?等內(nèi)容,需要的朋友可以參考下
    2015-04-04
  • matlab和Excel的數(shù)據(jù)交互操作(非xlsread和xlswrite)

    matlab和Excel的數(shù)據(jù)交互操作(非xlsread和xlswrite)

    在使用MATLAB時(shí),可能會(huì)遇到很多表格數(shù)據(jù)的處理,有時(shí)MATLAB也需要利用現(xiàn)存的表格數(shù)據(jù)實(shí)現(xiàn)操作目的,下面這篇文章主要給大家介紹了關(guān)于matlab和Excel的交互操作的相關(guān)資料,非xlsread和xlswrite,需要的朋友可以參考下
    2021-08-08

最新評(píng)論

大荔县| 崇礼县| 财经| 吐鲁番市| 华宁县| 缙云县| 遂平县| 湟中县| 上思县| 屏东县| 巴彦县| 蓬莱市| 惠来县| 隆回县| 吐鲁番市| 延安市| 叶城县| 固安县| 密云县| 沽源县| 锡林郭勒盟| 磐石市| 泰来县| 岗巴县| 涟源市| 周宁县| 香港| 邢台市| 广宗县| 安宁市| 富源县| 万安县| 溧阳市| 古浪县| 南昌县| 汽车| 广丰县| 天水市| 堆龙德庆县| 炉霍县| 抚顺市|