日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Python如何定義有默認參數的函數

瀏覽:109日期:2022-07-14 15:55:13

問題

你想定義一個函數或者方法,它的一個或多個參數是可選的并且有一個默認值。

解決方案

定義一個有可選參數的函數是非常簡單的,直接在函數定義中給參數指定一個默認值,并放到參數列表最后就行了。例如:

def spam(a, b=42): print(a, b)spam(1) # Ok. a=1, b=42spam(1, 2) # Ok. a=1, b=2

如果默認參數是一個可修改的容器比如一個列表、集合或者字典,可以使用None作為默認值,就像下面這樣:

# Using a list as a default valuedef spam(a, b=None): if b is None: b = [] ...

如果你并不想提供一個默認值,而是想僅僅測試下某個默認參數是不是有傳遞進來,可以像下面這樣寫:

_no_value = object()def spam(a, b=_no_value): if b is _no_value: print(’No b value supplied’) ...

我們測試下這個函數:

>>> spam(1)No b value supplied>>> spam(1, 2) # b = 2>>> spam(1, None) # b = None>>>

仔細觀察可以發現到傳遞一個None值和不傳值兩種情況是有差別的。

討論

定義帶默認值參數的函數是很簡單的,但絕不僅僅只是這個,還有一些東西在這里也深入討論下。

首先,默認參數的值僅僅在函數定義的時候賦值一次。試著運行下面這個例子:

>>> x = 42>>> def spam(a, b=x):... print(a, b)...>>> spam(1)1 42>>> x = 23 # Has no effect>>> spam(1)1 42>>>

注意到當我們改變x的值的時候對默認參數值并沒有影響,這是因為在函數定義的時候就已經確定了它的默認值了。

其次,默認參數的值應該是不可變的對象,比如None、True、False、數字或字符串。 特別的,千萬不要像下面這樣寫代碼:

def spam(a, b=[]): # NO! ...

如果你這么做了,當默認值在其他地方被修改后你將會遇到各種麻煩。這些修改會影響到下次調用這個函數時的默認值。比如:

>>> def spam(a, b=[]):... print(b)... return b...>>> x = spam(1)>>> x[]>>> x.append(99)>>> x.append(’Yow!’)>>> x[99, ’Yow!’]>>> spam(1) # Modified list gets returned![99, ’Yow!’]>>>

這種結果應該不是你想要的。為了避免這種情況的發生,最好是將默認值設為None, 然后在函數里面檢查它,前面的例子就是這樣做的。

在測試None值時使用 is 操作符是很重要的,也是這種方案的關鍵點。 有時候大家會犯下下面這樣的錯誤:

def spam(a, b=None): if not b: # NO! Use ’b is None’ instead b = [] ...

這么寫的問題在于盡管None值確實是被當成False, 但是還有其他的對象(比如長度為0的字符串、列表、元組、字典等)都會被當做False。 因此,上面的代碼會誤將一些其他輸入也當成是沒有輸入。比如:

>>> spam(1) # OK>>> x = []>>> spam(1, x) # Silent error. x value overwritten by default>>> spam(1, 0) # Silent error. 0 ignored>>> spam(1, ’’) # Silent error. ’’ ignored>>>

最后一個問題比較微妙,那就是一個函數需要測試某個可選參數是否被使用者傳遞進來。 這時候需要小心的是你不能用某個默認值比如None、 0或者False值來測試用戶提供的值(因為這些值都是合法的值,是可能被用戶傳遞進來的)。 因此,你需要其他的解決方案了。

為了解決這個問題,你可以創建一個獨一無二的私有對象實例,就像上面的_no_value變量那樣。 在函數里面,你可以通過檢查被傳遞參數值跟這個實例是否一樣來判斷。 這里的思路是用戶不可能去傳遞這個_no_value實例作為輸入。 因此,這里通過檢查這個值就能確定某個參數是否被傳遞進來了。

這里對 object() 的使用看上去有點不太常見。object 是python中所有類的基類。 你可以創建 object 類的實例,但是這些實例沒什么實際用處,因為它并沒有任何有用的方法, 也沒有任何實例數據(因為它沒有任何的實例字典,你甚至都不能設置任何屬性值)。 你唯一能做的就是測試同一性。這個剛好符合我的要求,因為我在函數中就只是需要一個同一性的測試而已。

以上就是Python如何定義有默認參數的函數的詳細內容,更多關于Python定義有默認參數的函數的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
精精国产xxxx视频在线野外| 国产精品毛片久久| 91精品久久久久久久久久不卡| 激情久久99| 精品国产午夜肉伦伦影院| 国产精品激情| 久久亚州av| 国语对白精品一区二区| 国产精品亚洲片在线播放| 国产精品蜜月aⅴ在线| 国产精品久久久免费| 欧美极品中文字幕| 国产一区二区三区四区二区| 伊伊综合在线| 免费观看不卡av| 欧美天堂亚洲电影院在线观看| 宅男噜噜噜66国产日韩在线观看| 亚洲欧美日韩国产一区二区| 日本欧洲一区二区| 欧美亚洲三级| 国产一区二区亚洲| 国产精品久久久久av电视剧| 精品一区三区| 蜜桃av一区二区三区电影| 日本va欧美va欧美va精品| 欧美激情一区| 青青青免费在线视频| 欧美日韩四区| 欧美日韩1区| 极品av在线| 午夜欧美视频| 欧美在线黄色| 色黄视频在线观看| 亚洲一区日韩| 国产精品一国产精品k频道56| 91麻豆国产自产在线观看亚洲| 亚洲二区视频| 涩涩涩久久久成人精品| 久久国内精品自在自线400部| 国产福利一区二区精品秒拍| 日本在线高清| 蜜臀av在线播放一区二区三区| 欧美日韩午夜| 久久久久久久久丰满| 亚洲一区二区三区四区电影| 国产精品啊v在线| 欧美成人基地 | 亚洲欧美日本日韩| 911亚洲精品| 高清久久一区| 性色一区二区| 久久久久97| 亚洲激情社区| 久草精品视频| 免费观看日韩电影| 色婷婷综合网| 深夜福利一区| 日韩大片免费观看| 91伊人久久| 激情综合亚洲| 国产美女撒尿一区二区| 久久精品亚洲人成影院 | 水野朝阳av一区二区三区| 国产欧美日韩一区二区三区四区| 韩国精品主播一区二区在线观看| 亚洲精品中文字幕99999| 久草免费在线视频| 爽好多水快深点欧美视频| 精品福利久久久| 伊人久久大香伊蕉在人线观看热v| 久久a爱视频| 蜜芽一区二区三区| 日韩欧美午夜| 色狠狠一区二区三区| 三级小说欧洲区亚洲区| 国产日韩亚洲欧美精品| 亚洲精品a级片| 成人精品国产亚洲| 91精品视频一区二区| 99国产成+人+综合+亚洲欧美| 久久精品国产99国产精品| 色综合视频一区二区三区日韩 | 9色国产精品| 精品国产精品久久一区免费式| 视频一区视频二区中文| 成人看片网站| 精品一区二区三区视频在线播放| 天堂俺去俺来也www久久婷婷| 亚洲大全视频| 中文另类视频| 国产精品夜夜夜| 亚洲在线久久| 午夜一级久久| 欧美精品一区二区三区精品| 国产美女高潮在线| 六月丁香综合在线视频| 91精品日本| 婷婷精品在线| 亚洲一区二区三区在线免费| 亚洲精品一区二区妖精| 欧美一区久久久| 久久麻豆视频| 国产亚洲一区| 日韩精品免费视频人成| 视频一区二区不卡| 国产一区观看| 久久人人97超碰国产公开结果| 电影91久久久| 久久精品一本| 精品一区二区三区的国产在线观看 | 欧美特黄视频| 99国产精品一区二区| 麻豆mv在线观看| 国产一区二区三区四区五区传媒| 国产精品成人国产| 欧美一区二区三区久久精品| 中文字幕乱码亚洲无线精品一区| 激情久久久久久久| 国产综合亚洲精品一区二| 999久久久91| 国产一区欧美| 亚洲专区欧美专区| 鲁大师影院一区二区三区| 亚洲欧美视频| 伊人www22综合色| 亚洲精品欧美| 国产精品自在| 久久精品网址| 色偷偷色偷偷色偷偷在线视频| 国产成人精品三级高清久久91| 美腿丝袜亚洲三区| 精品视频一二| 婷婷激情一区| 午夜久久免费观看| 一区二区亚洲视频| 欧美精品福利| 精品中文字幕一区二区三区| 国产+成+人+亚洲欧洲在线| 日韩中文在线电影| 久久影视一区| 国产一区导航| 日韩欧美另类中文字幕| 国产精品入口久久| 精品久久亚洲| 国产亚洲一区二区手机在线观看 | 日韩av一区二区在线影视| 青青国产精品| 麻豆国产精品| 日韩在线欧美| 亚洲欧美激情诱惑| 日韩av在线免费观看不卡| 国产福利一区二区三区在线播放| 成人污污视频| 激情久久中文字幕| 亚洲视频二区| 久久中文字幕一区二区三区| 日韩欧美精品综合| 免费精品视频最新在线| 国产日韩欧美一区二区三区 | 久久婷婷丁香| 国产精品丝袜xxxxxxx| 日韩二区三区四区| 欧美激情三区| 婷婷激情综合| 日韩成人av影视| 成人精品动漫一区二区三区| 欧美 日韩 国产精品免费观看| 伊人精品久久| 国产一区二区三区四区五区传媒| 国产中文一区| 91福利精品在线观看| 色婷婷综合网| 亚洲婷婷丁香| 福利视频一区| 最新亚洲激情| 国产极品模特精品一二| 婷婷亚洲综合| 国产日韩一区二区三区在线播放 | 亚洲精品a级片| 国产伦精品一区二区三区视频| 日韩国产在线| 天堂va在线高清一区| а√在线中文在线新版| 免费精品视频最新在线| 狠狠久久伊人中文字幕| 人人精品人人爱| 国产不卡人人| 日韩有码av| 99免费精品| 国产欧美日韩一区二区三区四区| 成人午夜精品| 欧美午夜三级| 在线亚洲国产精品网站| 国产一区二区三区视频在线| 免费人成在线不卡| yellow在线观看网址| 日韩精品亚洲aⅴ在线影院| 91精品国产成人观看| 国产极品模特精品一二| 99国产精品99久久久久久粉嫩|