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

首頁 > 編程 > Python > 正文

Python使用函數(shù)默認(rèn)值實(shí)現(xiàn)函數(shù)靜態(tài)變量的方法

2020-02-23 05:38:29
字體:
供稿:網(wǎng)友

本文實(shí)例展示了Python使用函數(shù)默認(rèn)值實(shí)現(xiàn)函數(shù)靜態(tài)變量的方法,具體方法如下:

一、Python函數(shù)默認(rèn)值

Python函數(shù)默認(rèn)值的使用可以在函數(shù)調(diào)用時(shí)寫代碼提供方便,很多時(shí)候我們只要使用默認(rèn)值就可以了。 所以函數(shù)默認(rèn)值在python中用到的很多,尤其是在類中間,類的初始化函數(shù)中一幫都會(huì)用到默認(rèn)值。 使用類時(shí)能夠方便的創(chuàng)建類,而不需要傳遞一堆參數(shù)。

只要在函數(shù)參數(shù)名后面加上 ”=defalut_value”,函數(shù)默認(rèn)值就定義好了。有一個(gè)地方需要注意的是,有默認(rèn)值的參數(shù)必須在函數(shù)參數(shù)列表的最后,不允許將沒有默認(rèn)值的參數(shù)放在有默認(rèn)值的參數(shù)后,因?yàn)槿绻隳菢佣x的話,解釋器將不知道如何去傳遞參數(shù)。

先來看一段示例代碼:

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ù)和輸出的提示語言,如果你比較懶得話,那么什么都不用改。

二、python使用函數(shù)默認(rèn)值來實(shí)現(xiàn)函數(shù)靜態(tài)變量的功能

Python中是不支持靜態(tài)變量的,但是我們可以通過函數(shù)的默認(rèn)值來實(shí)現(xiàn)靜態(tài)變量的功能。
當(dāng)函數(shù)的默認(rèn)值是內(nèi)容是可變的類時(shí),類的內(nèi)容可變,而類的名字沒變。(相當(dāng)于開辟的內(nèi)存區(qū)域沒有變,而其中內(nèi)容可以變化)。
這是因?yàn)閜ython中函數(shù)的默認(rèn)值只會(huì)被執(zhí)行一次,(和靜態(tài)變量一樣,靜態(tài)變量初始化也是被執(zhí)行一次。)這就是他們的共同點(diǎn)。

再來看下面的程序片段:

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)變量并沒有被改變,因?yàn)槟J(rèn)變量的初始化只是被執(zhí)行了一次(第一次使用默認(rèn)值調(diào)用),初始化執(zhí)行開辟的內(nèi)存區(qū)(我們可以稱之為默認(rèn)變量)沒有被改變,所以最后的輸出結(jié)果是“[1, 2, 3, 5]”。

相信本文所述實(shí)例對(duì)大家Python程序設(shè)計(jì)有一定的幫助作用。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 西峡县| 阜宁县| 上栗县| 瑞丽市| 云和县| 宾川县| 大埔县| 台南市| 唐河县| 贵阳市| 安庆市| 县级市| 吉木萨尔县| 游戏| 抚远县| 宁陕县| 衡南县| 垫江县| 贡觉县| 抚宁县| 铜陵市| 昂仁县| 鄂伦春自治旗| 土默特左旗| 响水县| 昆山市| 公主岭市| 诏安县| 金昌市| 临潭县| 潮安县| 陆丰市| 宣威市| 凌海市| 夏河县| 且末县| 江华| 新龙县| 旅游| 托里县| 吉林省|