python 函數的預設參數

來源:互聯網
上載者:User

標籤:

直接上代碼:

first = 1second = 2def haha(first=first,second=second):#預設值是上面定義的兩個變數    print "first: %d"%first    print "second: %d"%secondhaha()first += 5second += 6haha()

輸出結果呢?

先不急看結果,可以先假想一下,無非兩種結果:

一種是haha這個函數的預設值隨first和second這兩個變數的改變了,也就是後面依次調用haha得到的是5和6

一種是haha這個函數的預設值沒有隨first和second這兩個變數的改變,也就是後面仍輸出1和2

可以自己運行一下試試,結果是上面的第二種,也就是仍輸出1和2

也就是說初始化這個函數時,其預設參數是將值傳了進來而不是變數的地址(指標?python沒有,不過可以通過id這個函數)

是不是所有的類型都是這樣呢?

我試了下面一種,其他的請自己嘗試:

列表list類型變數做預設參數

l1 = [1,]def haha(l1=l1):    print l1haha()l1.append(2)haha()l1 = [3,]#注意重新賦值和上面的區別haha()

詳情可以參節: Default arguments in Python

附:

對於第一種int類型的預設值,如果想要更改可以使用 標準庫functools的partial函數,

詳情見Change default values of existing function‘s parameters?


python 函數的預設參數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.