本文實例展示了Python使用函數默認值實現函數靜態變量的方法,具體方法如下:
一、Python函數默認值
Python函數默認值的使用可以在函數調用時寫代碼提供方便,很多時候我們只要使用默認值就可以了。 所以函數默認值在python中用到的很多,尤其是在類中間,類的初始化函數中一幫都會用到默認值。 使用類時能夠方便的創建類,而不需要傳遞一堆參數。
只要在函數參數名后面加上 ”=defalut_value”,函數默認值就定義好了。有一個地方需要注意的是,有默認值的參數必須在函數參數列表的最后,不允許將沒有默認值的參數放在有默認值的參數后,因為如果你那樣定義的話,解釋器將不知道如何去傳遞參數。
先來看一段示例代碼:
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
你調用上面的函數時,可以修改重試次數和輸出的提示語言,如果你比較懶得話,那么什么都不用改。
二、python使用函數默認值來實現函數靜態變量的功能
Python中是不支持靜態變量的,但是我們可以通過函數的默認值來實現靜態變量的功能。
當函數的默認值是內容是可變的類時,類的內容可變,而類的名字沒變。(相當于開辟的內存區域沒有變,而其中內容可以變化)。
這是因為python中函數的默認值只會被執行一次,(和靜態變量一樣,靜態變量初始化也是被執行一次。)這就是他們的共同點。
再來看下面的程序片段:
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)
其輸出結果是:
[1][1, 2][1, 2, 3]['x', 4][1, 2, 3, 5]
前面的好理解,為什么最后 “print f(5)”的輸出是 “[1, 2, 3, 5]”呢?
這是因為 “print f(4,['x'])”時,默認變量并沒有被改變,因為默認變量的初始化只是被執行了一次(第一次使用默認值調用),初始化執行開辟的內存區(我們可以稱之為默認變量)沒有被改變,所以最后的輸出結果是“[1, 2, 3, 5]”。
相信本文所述實例對大家Python程序設計有一定的幫助作用。
新聞熱點
疑難解答