99偷拍视频精品区一区二,口述久久久久久久久久久久,国产精品夫妇激情啪发布,成人永久免费网站在线观看,国产精品高清免费在线,青青草在线观看视频观看,久久久久久国产一区,天天婷婷久久18禁,日韩动漫av在线播放直播

python3教程:默認參數為列表

默認參數的坑

定義一個函數,傳入一個list,添加一個end再返回

創新互聯公司服務項目包括渝水網站建設、渝水網站制作、渝水網頁制作以及渝水網絡營銷策劃等。多年來,我們專注于互聯網行業,利用自身積累的技術優勢、行業經驗、深度合作伙伴關系等,向廣大中小型企業、政府機構等提供互聯網行業的解決方案,渝水網站推廣取得了明顯的社會效益與經濟效益。目前,我們服務的客戶以成都為中心已經輻射到渝水省份的部分城市,未來相信會繼續擴大服務區域并繼續獲得客戶的支持與信任!

def  add_end(L=[]):
    L.append('END')
    return L

正常調用時,結果似乎不錯

print  (add_end([1,2,3]))  #[1, 2, 3, 'END']

使用默認參數調用時,一開始結果也是對的,但是再次調用時,結果就不對了

'''
學習中遇到問題沒人解答?小編創建了一個Python學習交流群:
尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書!
'''
print (add_end())   #['END']
 
print (add_end())    #['END', 'END']
 
print  (add_end())    #['END', 'END', 'END']

從上述調用結果發現,函數每次都記住了上次添加了‘END’后的list,python函數在定義的時候,默認參數L的值就被計算出來了即[],因為默認參數L也是一個變量,它指向對象[],每次調用該函數,如果改變 了L的內容,則下次調用時,默認參數的內容就變了,不再是函數定義時的[]了

所以,定義默認參數要牢記一點:默認參數必須指向不變對象

修改上面的例子,可以用None這個不變對象來實現

def  add_end2(L=None):
    if L is None:
        L=[]
    L.append('END')
    return  L

無論調用多少次都沒問題

print (add_end2())
print  (add_end2())
print  (add_end2())
#['END']
#['END']
#['END']

不變對象一旦創建,對象內部的數據就不能修改,這樣就減少了由于修改數據導致的錯誤。此外,由于對象不變,多任務環境下同時讀取對象不需要加鎖,同時讀一點問題都沒有。我們在編寫程序時,如果可以設計一個不變對象,那就盡量設計成不變對象。

不可變(immutable):int、字符串(string)、float、(數值型number)、元組(tuple)
可變(mutable):字典型(dictionary)、列表型(list)

網站題目:python3教程:默認參數為列表
當前路徑:http://www.yijiale78.com/article40/dsoggeo.html

成都網站建設公司_創新互聯,為您提供手機網站建設網站設計網站策劃小程序開發用戶體驗

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都網站建設公司