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

Python使用修飾器執(zhí)行函數(shù)的參數(shù)檢查功能示例

 更新時間:2017年09月26日 10:57:50   作者:Inside_Zhang  
這篇文章主要介紹了Python使用修飾器執(zhí)行函數(shù)的參數(shù)檢查功能,結(jié)合具體實例形式分析了Python實現(xiàn)修飾器針對函數(shù)參數(shù)檢查的原理、步驟與相關操作技巧,需要的朋友可以參考下

本文實例講述了Python使用修飾器執(zhí)行函數(shù)的參數(shù)檢查功能。分享給大家供大家參考,具體如下:

參數(shù)檢查:1. 參數(shù)的個數(shù);2. 參數(shù)的類型;3. 返回值的類型。

考慮如下的函數(shù):

import html
def make_tagged(text, tag):
  return '<{0}>{1}</{0}>'.format(tag, html.escape(text))

顯然我們希望傳遞進來兩個參數(shù),且參數(shù)類型/返回值類型均為str,再考慮如下的函數(shù):

def repeat(what, count, separator) :
  return ((what + separator)*count)[:-len(separator)]

顯然我們希望傳遞進來三個參數(shù),分別為str,int,str類型,可對返回值不做要求。

那么我們該如何實現(xiàn)對上述參數(shù)要求,進行參數(shù)檢查呢?

import functools
def statically_typed(*types, return_type=None):
  def decorator(func):
    @functools.wraps(func)
    def wrapper(*args, **kwargs):
      if len(args) > len(types):
        raise ValueError('too many arguments')
      elif len(args) < len(types):
        raise ValueError('too few arguments')
      for i, (type_, arg) in enumerate(zip(types, args)):
        if not isinstance(type_, arg):
          raise ValueError('argument {} must be of type {}'.format(i, type_.__name__))
      result = func(*args, **kwargs)
      if return_type is not None and not isinstance(result, return_type):
        raise ValueError('return value must be of type {}'.format(return_type.__name__))
      return wrapper
    return decorator

這樣,我們便可以使用修飾器模板執(zhí)行參數(shù)檢查了:

@statically_typed(str, str, return_type=str)
def make_tagged(text, tag):
  return '<{0}>{1}</{0}>'.format(tag, html.escape(text))
@statically_typed(str, int, str)
def repeat(what, count, separator):
  return ((what + separator)*count)[:-len(separator)]

注:從靜態(tài)類型語言(C/C++、Java)轉(zhuǎn)入 Python 的開發(fā)者可能比較喜歡用修飾器對函數(shù)的參數(shù)及返回值執(zhí)行靜態(tài)類型檢查,但這樣做會增加 Python 程序在運行期的開銷,而編譯型語言則沒有這種運行期開銷(Python 是解釋型語言)。

更多關于Python相關內(nèi)容可查看本站專題:《Python函數(shù)使用技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python字符串操作技巧匯總》、《Python入門與進階經(jīng)典教程》及《Python文件與目錄操作技巧匯總

希望本文所述對大家Python程序設計有所幫助。

相關文章

  • 一文帶你探索Python中的eventlet通信機制

    一文帶你探索Python中的eventlet通信機制

    這篇文章主要為大家詳細介紹了Python中的eventlet通信機制的相關知識,文中的示例代碼講解詳細,對我們深入了解Python有一定幫助,需要的可以參考一下
    2023-06-06
  • 基于python做一個2048小游戲

    基于python做一個2048小游戲

    2048的邏輯無非是操作4*4的方格,每個方格中有一個數(shù),這些數(shù)可以移動,如果兩個相同的數(shù)字在移動時相撞了,就可以彼此合并,本文將給大家介紹如何基于python做一個2048小游戲,感興趣的小伙伴跟著小編一起來看看吧
    2024-01-01
  • Python實現(xiàn)DBSCAN聚類算法并樣例測試

    Python實現(xiàn)DBSCAN聚類算法并樣例測試

    聚類是一種機器學習技術,它涉及到數(shù)據(jù)點的分組,聚類是一種無監(jiān)督學習的方法,是許多領域中常用的統(tǒng)計數(shù)據(jù)分析技術。本文給大家分享Python實現(xiàn)DBSCAN聚類算法并樣例測試,感興趣的朋友一起看看吧
    2021-06-06
  • Python數(shù)據(jù)處理的三個實用技巧分享

    Python數(shù)據(jù)處理的三個實用技巧分享

    數(shù)據(jù)處理無所不在,掌握常用技巧,事半功倍。這篇文章將使用Pandas開展數(shù)據(jù)處理分析,總結(jié)其中常用、好用的數(shù)據(jù)分析技巧,感興趣的可以學習一下
    2022-04-04
  • Python中多線程thread與threading的實現(xiàn)方法

    Python中多線程thread與threading的實現(xiàn)方法

    這篇文章主要介紹了Python中多線程thread與threading的實現(xiàn)方法,很重要的應用,需要的朋友可以參考下
    2014-08-08
  • python模擬登陸、POST/GET請求方式

    python模擬登陸、POST/GET請求方式

    這篇文章主要介紹了python模擬登陸、POST/GET請求方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • pycharm遠程連接服務器運行pytorch的過程詳解

    pycharm遠程連接服務器運行pytorch的過程詳解

    這篇文章主要介紹了在Linux環(huán)境下使用Anaconda管理不同版本的Python環(huán)境,并通過PyCharm遠程連接服務器來運行PyTorch的過程,包括安裝PyTorch、CUDA以及配置PyCharm遠程開發(fā)環(huán)境的詳細步驟,需要的朋友可以參考下
    2025-02-02
  • 總結(jié)python爬蟲抓站的實用技巧

    總結(jié)python爬蟲抓站的實用技巧

    很多人學用python,用得最多的還是各類爬蟲腳本:有寫過抓代理本機驗證的腳本,有寫過自動收郵件的腳本,還有寫過簡單的驗證碼識別的腳本,那么我們今天就來總結(jié)下python爬蟲抓站的一些實用技巧。
    2016-08-08
  • Python中實現(xiàn)定時任務常見的幾種方式

    Python中實現(xiàn)定時任務常見的幾種方式

    在Python中,實現(xiàn)定時任務是一個常見的需求,無論是在自動化腳本、數(shù)據(jù)處理、系統(tǒng)監(jiān)控還是其他許多應用場景中,Python提供了多種方法來實現(xiàn)定時任務,包括使用標準庫、第三方庫以及系統(tǒng)級別的工具,本文將詳細介紹幾種常見的Python定時任務實現(xiàn)方式
    2024-08-08
  • python中使用requests設置代理服務器

    python中使用requests設置代理服務器

    文章介紹了代理服務器的工作原理和使用方法,包括代理的概念、代理服務器的作用、如何在Python中設置代理以及代理的匿名度分類
    2024-11-11

最新評論

正阳县| 嘉黎县| 宕昌县| 祁东县| 兰西县| 阿城市| 高邑县| 平安县| 顺义区| 读书| 集安市| 海城市| 且末县| 延安市| 济南市| 万荣县| 江津市| 电白县| 木兰县| 土默特右旗| 太白县| 遵化市| 通辽市| 本溪市| 疏勒县| 隆德县| 藁城市| 扎赉特旗| 峡江县| 上林县| 天峨县| 平陆县| 平顺县| 吉安县| 临泽县| 三穗县| 汕尾市| 东明县| 五台县| 团风县| 金湖县|