国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python使用函數默認值實現函數靜態變量的方法

2019-11-25 18:17:04
字體:
來源:轉載
供稿:網友

本文實例展示了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程序設計有一定的幫助作用。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 邢台县| 长宁区| 淄博市| 浦东新区| 牡丹江市| 登封市| 固始县| 耒阳市| 武宣县| 佳木斯市| 汉源县| 荣成市| 隆子县| 福建省| 郓城县| 五大连池市| 石城县| 清涧县| 安平县| 北宁市| 广平县| 喀什市| 黄大仙区| 五大连池市| 文水县| 洛川县| 广汉市| 康平县| 山东省| 五家渠市| 分宜县| 伊金霍洛旗| 道孚县| 堆龙德庆县| 额尔古纳市| 福贡县| 怀仁县| 凌海市| 长治市| 滦南县| 鹤岗市|