首頁  >  文章  >  後端開發  >  Python 中類別的靜態變數怎麼理解

Python 中類別的靜態變數怎麼理解

anonymity
anonymity原創
2019-05-27 13:43:336085瀏覽

Python使用函數預設值實作函數靜態變數,如果是靜態方法,可以使用@staticmethod標註。

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, &#39;refusenik user&#39;
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,[&#39;x&#39;])
print f(5)

其輸出結果是:

[1]
[1, 2]
[1, 2, 3]
[&#39;x&#39;, 4]
[1, 2, 3, 5]

前面的好理解,為什麼最後「print f(5)」的輸出是「[1, 2, 3, 5]」呢?
這是因為「print f(4,['x'])」時,預設變數並沒有被改變,因為預設變數的初始化只是被執行了一次(第一次使用預設值呼叫),初始化執行開啟的記憶體區(我們可以稱之為預設變數)沒有被改變,所以最後的輸出結果是「[1, 2, 3, 5]」。

以上是Python 中類別的靜態變數怎麼理解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn