Python使用函數預設值實現函數靜態變數的方法

來源:互聯網
上載者:User
本文執行個體展示了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程式設計有一定的協助作用。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.