標籤: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]函數(方法?)