亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

淺談使用Python內(nèi)置函數(shù)getattr實現(xiàn)分發(fā)模式

 更新時間:2018年01月22日 10:43:09   作者:longzhiwen888  
這篇文章主要介紹了淺談使用Python內(nèi)置函數(shù)getattr實現(xiàn)分發(fā)模式,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下

本文研究的主要是使用Python內(nèi)置函數(shù)getattr實現(xiàn)分發(fā)模式的相關(guān)問題,具體介紹如下。

getattr 常見的使用模式是作為一個分發(fā)者。舉個例子,如果你有一個程序可以以不同的格式輸出數(shù)據(jù),你可以為每種輸出格式定義各自的格式輸出函數(shù),然后使用唯一的分發(fā)函數(shù)調(diào)用所需的格式輸出函數(shù)。

例如,讓我們假設(shè)有一個以 HTML、XML 和普通文本格式打印站點統(tǒng)計的程序。輸出格式在命令行中指定,或者保存在配置文件中。statsout 模塊定義了三個函數(shù):output_html、output_xml output_text。然后主程序定義了唯一的輸出函數(shù),如下:

import statsout

def output(data, format="text"):               
  output_function = getattr(statsout, "output_%s" % format) 
  return output_function(data)     

output 函數(shù)接收一個必備參數(shù) data,和一個可選參數(shù) format。如果沒有指定 format 參數(shù),其缺省值是 text 并完成普通文本輸出函數(shù)的調(diào)用。

你可以連接 format 參數(shù)值和 "output_" 來創(chuàng)建一個函數(shù)名稱作為參數(shù)值,然后從 statsout 模塊中取得該函數(shù)。這種方式允許今后很容易的擴展程序以支持其它的輸出格式,而且無需修改分發(fā)函數(shù)。所要做的僅僅是向 statsout 中添加一個函數(shù),比如 output_pdf,之后只要將 “pdf” 作為 format 的參數(shù)值傳遞給 output 函數(shù)即可。

現(xiàn)在你可以簡單的調(diào)用輸出函數(shù)就像調(diào)用其它函數(shù)一樣了。output_function 變量是指向 statsout 模塊中相應(yīng)函數(shù)的引用。

你是否發(fā)現(xiàn)前面示例的一個 Bug?即字符串和函數(shù)之間的松耦合,而且沒有錯誤檢查。如果用戶傳入一個格式參數(shù),但是在 statsout 中沒有定義相應(yīng)的格式輸出函數(shù),會發(fā)生什么呢?還好,getattr 會返回 None,它會取代一個有效函數(shù)并被賦值給 output_function,然后下一行調(diào)用函數(shù)的語句將會失敗并拋出一個異常。這種方式不好。值得慶幸的是,getattr 能夠使用可選的第三個參數(shù),一個缺省返回值。

總結(jié)

以上就是本文關(guān)于淺談使用Python內(nèi)置函數(shù)getattr實現(xiàn)分發(fā)模式的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

相關(guān)文章

  • 使用Python中PIL庫給圖片添加文本水印

    使用Python中PIL庫給圖片添加文本水印

    有時候我們需要添加一定的水印以給自己的圖片添加先關(guān)的標記,在Python中有相關(guān)的計算函數(shù),下面這篇文章主要給大家介紹了關(guān)于使用Python中PIL庫給圖片添加文本水印的相關(guān)資料,需要的朋友可以參考下
    2023-04-04
  • python微信公眾號開發(fā)簡單流程

    python微信公眾號開發(fā)簡單流程

    這篇文章主要介紹了python微信公眾號開發(fā)的相關(guān)資料,分步驟為大家分享python微信公眾號開發(fā),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • 解決python多行注釋引發(fā)縮進錯誤的問題

    解決python多行注釋引發(fā)縮進錯誤的問題

    今天小編就為大家分享一篇解決python多行注釋引發(fā)縮進錯誤的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • python數(shù)組轉(zhuǎn)換為矩陣的方法實現(xiàn)

    python數(shù)組轉(zhuǎn)換為矩陣的方法實現(xiàn)

    本文主要介紹了python數(shù)組轉(zhuǎn)換為矩陣的方法實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • Python+AI實現(xiàn)給老照片上色

    Python+AI實現(xiàn)給老照片上色

    今天給大家分享一個有趣的AI項目——利用NoGAN的圖像增強技術(shù)給老照片著色,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2022-06-06
  • python實現(xiàn)單鏈表中刪除倒數(shù)第K個節(jié)點的方法

    python實現(xiàn)單鏈表中刪除倒數(shù)第K個節(jié)點的方法

    這篇文章主要為大家詳細介紹了python實現(xiàn)單鏈表中刪除倒數(shù)第K個節(jié)點的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • python中requests和https使用簡單示例

    python中requests和https使用簡單示例

    這篇文章主要介紹了python中requests和https使用簡單示例,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • 簡單介紹Ruby中的CGI編程

    簡單介紹Ruby中的CGI編程

    這篇文章主要介紹了簡單介紹Ruby中的CGI編程,包括創(chuàng)建Form表單等基本內(nèi)容,需要的朋友可以參考下
    2015-04-04
  • python中tkinter的應(yīng)用:修改字體的實例講解

    python中tkinter的應(yīng)用:修改字體的實例講解

    今天小編就為大家分享一篇python中tkinter的應(yīng)用:修改字體的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • python實現(xiàn)從ftp上下載文件的實例方法

    python實現(xiàn)從ftp上下載文件的實例方法

    在本篇文章里小編給大家整理了關(guān)于python實現(xiàn)從ftp上下載文件的實例方法,需要的朋友們可以參考下。
    2020-07-07

最新評論