[python 筆記3]函數(方法?)

來源:互聯網
上載者:User

標籤:python   函數   方法   

1、定義

    python函數以關鍵字def標識

def test(name):print 'hello %s'%(name)name=raw_input('please input your name:  ')test(name)


    

   PS:在python中代碼塊以縮緊的方式進行標識,所以縮排對齊的語句為一個代碼塊,這比像C++\java使用{}進行標識的方法方便不少,但是也對一些代碼對齊不規範的同學帶來一些麻煩

  

def 函數名(參數列表):        函數體

2、參數列表

  python在函數中的參數與C++類似,沒有特殊說明說明是傳值參數,即改變函數內部的局部變數,函數外的變數值是不會改變的

  

def test(num):num+=1print numnum=1test(num)print num


  當我們想使用參數改變外部變數是應該怎麼辦呢?

    1)使用函數返回值改變

   

def test(num):num+=1print numreturn numnum=1num=test(num)print num

    2)給函數參數傳入一個列表或字典

    

def test(num):num[0]=num[0]+1print num[0]num=[1]test(num)print num[0]

   為什麼我們傳入一個變數不會改變,而傳入一個列表,列表的值就改變了呢?

  其實是這個樣子的,我們函數中的num列表和函數外的num列表引用的是同一個列表,所以在函數內部修改時,函數外部變數所引用的列表也跟著改變(怎麼這麼彆扭呢?)PS:這是不是和我們在c++中傳引用和指標差不多呢?

3、關鍵字參數和預設值參數

    在上面的介紹中,函數的傳參都是按照函數參數列表中的位置順序決定的,當我們把傳參的順序改變是,函數就不會完成預期的工作。

   關鍵字參數在函數傳參是為每一個參數指定一個名字,這樣無論在參數列表中的順序是什麼樣子的,都會匹配到實際的參數(還是這麼彆扭呢?)

def test(first,second):res=first-secondreturn resprint test(1,2)print test(2,1)print test(first=1,second=2)print test(second=2,first=1)


   預設值參數指在函數定義中在參數列表中設定參數額度預設值,當我們在使用函數時如果傳入了新的值則使用新值,如果未傳入參數,則使用預設值

  

def test(first=1,second=2):res=first-secondreturn resprint test(1,2)print test()

4、函數傳列表、字典

   在python中可以使用*(**)傳遞參數,可以傳遞多個參數,把*後面的參數當作一個列表(字典)處理

  

def test(*list):print listprint list[0]+list[4]num1=1num2=2num3=3num4=4num5=5test(num1,num2,num3,num4,num5)

  


著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

[python 筆記3]函數(方法?)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.