Python使用函數(shù)默認(rèn)值實(shí)現(xiàn)函數(shù)靜態(tài)變量的方法
本文實(shí)例展示了Python使用函數(shù)默認(rèn)值實(shí)現(xiàn)函數(shù)靜態(tài)變量的方法,具體方法如下:
一、Python函數(shù)默認(rèn)值
Python函數(shù)默認(rèn)值的使用可以在函數(shù)調(diào)用時(shí)寫(xiě)代碼提供方便,很多時(shí)候我們只要使用默認(rèn)值就可以了。 所以函數(shù)默認(rèn)值在python中用到的很多,尤其是在類(lèi)中間,類(lèi)的初始化函數(shù)中一幫都會(huì)用到默認(rèn)值。 使用類(lèi)時(shí)能夠方便的創(chuàng)建類(lèi),而不需要傳遞一堆參數(shù)。
只要在函數(shù)參數(shù)名后面加上 ”=defalut_value”,函數(shù)默認(rèn)值就定義好了。有一個(gè)地方需要注意的是,有默認(rèn)值的參數(shù)必須在函數(shù)參數(shù)列表的最后,不允許將沒(méi)有默認(rèn)值的參數(shù)放在有默認(rèn)值的參數(shù)后,因?yàn)槿绻隳菢佣x的話,解釋器將不知道如何去傳遞參數(shù)。
先來(lái)看一段示例代碼:
def ask_ok(prompt, retries=4, complaint='Yes or no, please!'): while True: ok = raw_input(prompt) if ok in ('y', 'ye', 'yes'): return True if ok in ('n', 'no', 'nop', 'nope'): return False retries = retries - 1 if retries < 0: raise IOError, 'refusenik user' print complaint
你調(diào)用上面的函數(shù)時(shí),可以修改重試次數(shù)和輸出的提示語(yǔ)言,如果你比較懶得話,那么什么都不用改。
二、python使用函數(shù)默認(rèn)值來(lái)實(shí)現(xiàn)函數(shù)靜態(tài)變量的功能
Python中是不支持靜態(tài)變量的,但是我們可以通過(guò)函數(shù)的默認(rèn)值來(lái)實(shí)現(xiàn)靜態(tài)變量的功能。
當(dāng)函數(shù)的默認(rèn)值是內(nèi)容是可變的類(lèi)時(shí),類(lèi)的內(nèi)容可變,而類(lèi)的名字沒(méi)變。(相當(dāng)于開(kāi)辟的內(nèi)存區(qū)域沒(méi)有變,而其中內(nèi)容可以變化)。
這是因?yàn)閜ython中函數(shù)的默認(rèn)值只會(huì)被執(zhí)行一次,(和靜態(tài)變量一樣,靜態(tài)變量初始化也是被執(zhí)行一次。)這就是他們的共同點(diǎn)。
再來(lái)看下面的程序片段:
def f(a, L=[]): L.append(a) return L print f(1) print f(2) print f(3) print f(4,['x']) print f(5)
其輸出結(jié)果是:
[1] [1, 2] [1, 2, 3] ['x', 4] [1, 2, 3, 5]
前面的好理解,為什么最后 “print f(5)”的輸出是 “[1, 2, 3, 5]”呢?
這是因?yàn)?“print f(4,['x'])”時(shí),默認(rèn)變量并沒(méi)有被改變,因?yàn)槟J(rèn)變量的初始化只是被執(zhí)行了一次(第一次使用默認(rèn)值調(diào)用),初始化執(zhí)行開(kāi)辟的內(nèi)存區(qū)(我們可以稱(chēng)之為默認(rèn)變量)沒(méi)有被改變,所以最后的輸出結(jié)果是“[1, 2, 3, 5]”。
相信本文所述實(shí)例對(duì)大家Python程序設(shè)計(jì)有一定的幫助作用。
相關(guān)文章
pycharm安裝opencv-python報(bào)錯(cuò)的解決
本文主要介紹了pycharm安裝opencv-python報(bào)錯(cuò)的解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07Django項(xiàng)目基礎(chǔ)配置和基本使用過(guò)程解析
這篇文章主要介紹了Django項(xiàng)目基礎(chǔ)配置和基本使用過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-11-11python實(shí)現(xiàn)抖音點(diǎn)贊功能
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)抖音點(diǎn)贊功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-04-04Python實(shí)現(xiàn)身份證號(hào)碼解析
本文給大家匯總介紹下使用Python實(shí)現(xiàn)身份證號(hào)碼驗(yàn)證解析的幾個(gè)方法,有需要的小伙伴可以參考下。2015-09-09python獲取指定時(shí)間差的時(shí)間實(shí)例詳解
這篇文章主要介紹了python獲取指定時(shí)間差的時(shí)間實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下2017-04-04