1. 程式人生 > >python學習筆記(4)

python學習筆記(4)

python

函數定義和調用
函數就是最基本的一種代碼抽象的方式(python有許多內置函數)
調用:要調用一個函數,需要知道函數 的名稱和參數
比較函數cmp(x,y)就需要兩個參數,如果x<y,就返回-1,如果x==y,就返回0,如果x>y就返回1
數據類型轉換函數,不如int()函數可以把其他數據類型轉換為整數

>>int(‘123’)
123
>int(12.34)
12
例如:
>>str(123)
‘123’
>>str(12.3)
‘12.3’
技術分享圖片

編寫函數:
在python中,定義以惡函數要使用def語句,一次寫出函數名,括號,括號中的參數和冒號,然後在縮進塊中編寫函數體,函數的返回值用return 語句返回

例如:定義一個求絕對值的my_abs函數
def my_abs(x):
if x>=0
return x
else
return -x
註意:如果沒有return語句,函數執行完畢也會返回結果,只是結構為none
技術分享圖片

函數返回多值
技術分享圖片
但其實這只是一種假象,python函數返回的仍然是單一值,python的函數返回多值其實就是返回一個tuple

遞歸函數:如果一個函數在內部調用自己本身,這個函數就是遞歸函數
例如:計算階乘n!
def fact(n):
if n==1
Return n*fact(n-1)

>>fact(1)
1
>>fact(5)
120

知識點:使用遞歸函數需要註意防止棧溢出。在計算機中,函數調用時通過棧(stack)這種數據結構實現的,每當進入一個函數調用,棧就會加一層棧幀,每當函數返回,棧就會減一層棧幀。由於棧的大小不是無限的,所以遞歸調用的次數過多,會導致棧溢出。

定義默認參數
例如python自帶的int()函數,其實就有兩個參數,既可以傳一個參數,又可以傳兩個參數

>>int(‘123’)
123
>>int(‘123’,8)
83
註意:int()函數的第二個參數蘇是轉換進制,如果不傳,默認是十進制(base=10)
技術分享圖片
知識點:由於函數的參數按從左到右的順序匹配。所以默認參數只能定義在必須函數的後面

技術分享圖片

定義可變參數
如果想讓一個函數能接受任意個參數,我們可以定義一個可變參數:
def fn(args)
print agrs
可變參數的名字前面有個
號,我們可以傳入任意個參數給可變參數:

>>fn()
()
>>fn(‘a’)

(‘a’)
>>fn(‘a’,’b’,’c’)
(‘a’,’b’,’c’)
可變參數也不是很神秘,python解釋器會把傳入的一組參數組裝正一個tuple傳遞給可變參數,因此在函數內部,直接把變量args看成一個tuple就好了

技術分享圖片

切片操作:
取一個list的部分元素是非常常見的操作

>>L=[‘Adma’,’Lisa’,’Bart’,’Paul’]
>>r=[]
>>n=3
>>for i in range(n)
... r.append(L[i])
...
>>r
[‘Adma’,’Lisa’,’Bart’]
切片操作符
>>L[0:3] 表示,從索引0開始取,知道索引3 為之,大怒包括3,即0,1,2,正好是三個元素
>>L[:3] 如果第一個索引是0,還可以省略
>>L[:] 只用一個 : ,表示從頭到尾
切片操作還可以制定第三個參數
>>L[::2] 第三個參數表示每N個取一個,L[::2]表示每兩個元素取出來一個,即隔一個取一個

技術分享圖片

倒序切片:

技術分享圖片
記住倒數第一個元素的索引是-1,倒序切片包含起始索引,不包含結束索引

技術分享圖片技術分享圖片

python學習筆記(4)