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

python裝飾器使用方法實例

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

什么是python的裝飾器?

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

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

復制代碼 代碼如下:

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

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

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

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

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

foo = timeit(foo)
foo()

python中提供了一個@符號的語法糖,用來簡化上面的代碼,他們的作用一樣

復制代碼 代碼如下:

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段的代碼是一樣的,等價的。

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

復制代碼 代碼如下:

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

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

復制代碼 代碼如下:

#!/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>
為什么是這個結(jié)果呢?
1.首先hello函數(shù)經(jīng)過makeitalic 函數(shù)的裝飾,變成了這個結(jié)果<i>hello world</i>
2.然后再經(jīng)過makebold函數(shù)的裝飾,變成了<b><i>hello world</i></b>,這個理解起來很簡單。

相關文章

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

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

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

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

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

    學習python (1)

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

    python-httpx的具體使用

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

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

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

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

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

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

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

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

    這篇文章主要介紹了解決jupyter?notebook內(nèi)核啟動失敗問題,本文給大家介紹了問題原因分析及解決方案,圖文并茂的形式給大家介紹的非常詳細,需要的朋友可以參考下
    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ù)據(jù)的處理,有時MATLAB也需要利用現(xiàn)存的表格數(shù)據(jù)實現(xiàn)操作目的,下面這篇文章主要給大家介紹了關于matlab和Excel的交互操作的相關資料,非xlsread和xlswrite,需要的朋友可以參考下
    2021-08-08

最新評論

勐海县| 明水县| 体育| 高碑店市| 大同县| 芜湖县| 莱芜市| 林州市| 电白县| 博爱县| 突泉县| 游戏| 夹江县| 聊城市| 绩溪县| 大丰市| 五大连池市| 长沙市| 姜堰市| 申扎县| 砀山县| 陕西省| 晋宁县| 康定县| 营口市| 黄平县| 庆元县| 盐亭县| 启东市| 云安县| 开原市| 株洲县| 得荣县| 罗城| 沭阳县| 顺昌县| 阳山县| 册亨县| 元谋县| 洮南市| 闽侯县|