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

Python 裝飾器代碼解析

 更新時間:2021年11月02日 16:03:58   作者:TORTOISR  
裝飾器(Decorators)是 Python 的一個重要部分。簡單地說:他們是修改其他函數的功能的函數。他們有助于讓我們的代碼更簡短,也更Pythonic(Python范兒)。大多數初學者不知道在哪兒使用它們,所以我將要分享幾個示例

前言:

以往看到我博客的小伙伴可能都知道,我的前言一般都是吐槽和講廢話環(huán)節(jié),哈哈哈哈。今天難得休息,最近可真是太忙了,博主已經連續(xù)一年都在996了,所以最近沒怎么學習新東西,只能回顧以往的舊知識了,上周一起工作的小伙伴扛不住996離職了,我們三人的小團隊也正式解散了,哎。原本想著找時間好好整理一個關于關于接口自動化測試或ceph相關的東西。但由于篇幅過長這里目前可能不會著手寫這方面東西。其實啊寫是很簡單的,主要例子難找。哈哈哈哈。
好了回歸正題吧??催^我以往博客的小伙伴肯定見我用過@parameterized.expand()用作參數化的裝飾器。這屬于系統定義裝飾器,當然我們自己也可以自定義裝飾器已適合我們日常的開發(fā)需求。
**什么是裝飾器:**裝飾器的本質就是一個函數,作用是在不改變源代碼的情況下,給函數增加額外的功能;裝飾器的使用通過@語法糖進行調用。

普通裝飾器:

直接上代碼吧。

def demo(func_test):
    def wrapper():
        print('定義的第一個裝飾器')
        func_test()
        print('裝飾器結束')
    return wrapper    #這里注意不要加括號


@demo
def func_test():
    print('小白小白!?。?!')

在這里插入圖片描述

直接使用自定義裝飾器強化的原方法。
帶有參數的裝飾器:

def demo(func_test):
    def wrapper(name):
        print('定義的第一個裝飾器')
        func_test(name)
        print('哦,你就是%s啊'%name)
        print('裝飾器結束')
    return wrapper


@demo
def func_test(name):
    print('大家好我叫%s'%name)

在這里插入圖片描述

是不是有點感覺了啊。
接下來就是不帶自定義參數的裝飾器

def demo(func_test):
    def wrapper(*name,**kwargs):
        print('定義的第一個裝飾器')
        func_test(*name,**kwargs)
        print('哦,你就是%s啊'%name[0])
        print('你今年%s歲啊'%name[1])
        print('裝飾器結束')
    return wrapper


@demo
def func_test(name,age):
    print('大家好我叫%s'%name)
    print('今年{}'.format(age))

在這里插入圖片描述

是不是很簡答啊。哈哈哈哈
多個裝飾一起使用。

def deco01(func):
    def wrapper(*args,**kwargs):
        print('第一層的裝飾器')
        func(*args,**kwargs)
        print('第一層裝飾器結束')
    return wrapper


def deco02(func):
    def wrapper(*args,**kwargs):
        print('這是第二層裝飾器')
        print('第二層裝飾器結束')
        func(*args, **kwargs)
    return wrapper


@deco02
@deco01
def func(a,b,c,name):
    print('hello ,here is a func')
    print("result is %d" %(a+b+c))
    print('name:{}'.format(name))

在這里插入圖片描述

看看執(zhí)行順序可以看出裝飾器是從上往下執(zhí)行的。
類裝飾器:
在使用裝飾器時我們總不能在一個文件里寫的都是裝飾器和各個方法吧,總是要分開的。這里就要是講一個類裝飾器。
這里呢,我大概了寫了一個讀取文件裝飾器的例子。

class Mydecorator():
    def __init__(self,func):
    # 定義為私有屬性
        self.func = func
    # 實現__call__方法,讓對象變成可以調用的對象,可調用的對象可以想函數那樣使用
    def __call__(self, *args, **kwargs):   
        print('測試類裝飾器')
        self.func(*args)
        catalogue = args[0]
        suffix = catalogue.split('.')[2]
        try:
            if suffix == 'json':
                with open(*args,'r',encoding='utf-8') as file_object:
                    contents = json.load(file_object)
                    print(contents)
            else:
                with open(*args,'r',encoding='utf-8') as file_object:
                    contents = file_object.read()
                    print(contents)
        except Exception as a:
            print('讀取文件出錯拉:{}'.format(a))
@Mydecorator
def name(name):
    print('請輸入對應文件路徑:%s'%name)

在這里插入圖片描述

是不是很好用啊。哈哈哈哈

到此這篇關于Python 裝飾器代碼解析的文章就介紹到這了,更多相關Python 裝飾器內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • python簡單操作excle的方法

    python簡單操作excle的方法

    Python操作Excle文件:使用xlwt庫將數據寫入Excel表格,使用xlrd 庫從Excel讀取數據。這篇文章主要介紹了python簡單操作excle的方法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-09-09
  • python 自動軌跡繪制的實例代碼

    python 自動軌跡繪制的實例代碼

    今天小編就為大家分享一篇python 自動軌跡繪制的實例代碼,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • 使用Keras 實現查看model weights .h5 文件的內容

    使用Keras 實現查看model weights .h5 文件的內容

    這篇文章主要介紹了使用Keras 實現查看model weights .h5 文件的內容,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Python使用Socket(Https)Post登錄百度的實現代碼

    Python使用Socket(Https)Post登錄百度的實現代碼

    以前都是用一些高級模塊,封裝的比較好,今天嘗試使用socket模塊登錄百度,弄了半天才弄好,主要由于百度在登陸頁使用了https,我們需要對socket進行一定處理
    2012-05-05
  • 關于python如何生成exe文件

    關于python如何生成exe文件

    這篇文章主要介紹了關于python如何生成exe文件,exe全稱“executable”,中文意思為“可執(zhí)行的”,是一種文件格式,是指一種可在操作系統存儲空間中浮動定位的可執(zhí)行程序,需要的朋友可以參考下
    2023-04-04
  • python遍歷迭代器自動鏈式處理數據的實例代碼

    python遍歷迭代器自動鏈式處理數據的實例代碼

    迭代器也是用來遍歷對象成員的,下面這篇文章主要給大家介紹了關于python遍歷迭代器自動鏈式處理數據的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-01-01
  • Django異步任務線程池實現原理

    Django異步任務線程池實現原理

    這篇文章主要介紹了Django異步任務線程池實現原理,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • Python實現SSH隧道功能的示例代碼

    Python實現SSH隧道功能的示例代碼

    SSH隧道是利用SSH協議建立一個加密通道,以保護通過不安全網絡傳輸的數據,本文將介紹如何使用Python來實現SSH隧道功能,感興趣的可以了解下
    2025-02-02
  • Python 自制簡單版《我的世界》的詳細過程

    Python 自制簡單版《我的世界》的詳細過程

    這篇文章主要介紹了教你用 Python 自制簡單版《我的世界》,接下來,我們就帶你運行這個項目,并對這個開源的小游戲做一下簡單的更改,讓它變成“你的”世界
    2021-11-11
  • Python數據結構與算法中的棧詳解(2)

    Python數據結構與算法中的棧詳解(2)

    這篇文章主要為大家詳細介紹了Python中的棧,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03

最新評論

壶关县| 民和| 瑞金市| 建平县| 岱山县| 双鸭山市| 石家庄市| 集贤县| 托里县| 墨竹工卡县| 永州市| 邵武市| 博白县| 通辽市| 扶风县| 长沙县| 商城县| 环江| 商城县| 镇江市| 米易县| 木兰县| 天津市| 长汀县| 洛南县| 资溪县| 酒泉市| 游戏| 常德市| 英吉沙县| 永吉县| 琼海市| 广南县| 乃东县| 长春市| 巴青县| 容城县| 达拉特旗| 长海县| 黄大仙区| 休宁县|