python自学笔记_python学习笔记(4)
函數(shù)定義和調(diào)用
函數(shù)就是最基本的一種代碼抽象的方式(python有許多內(nèi)置函數(shù))
調(diào)用:要調(diào)用一個函數(shù),需要知道函數(shù) 的名稱和參數(shù)
比較函數(shù)cmp(x,y)就需要兩個參數(shù),如果xy就返回1
數(shù)據(jù)類型轉(zhuǎn)換函數(shù),不如int()函數(shù)可以把其他數(shù)據(jù)類型轉(zhuǎn)換為整數(shù)
int(‘123’)
123
int(12.34)
12
例如:
str(123)
‘123’
str(12.3)
‘12.3’
編寫函數(shù):
在python中,定義以惡函數(shù)要使用def語句,一次寫出函數(shù)名,括號,括號中的參數(shù)和冒號,然后在縮進(jìn)塊中編寫函數(shù)體,函數(shù)的返回值用return 語句返回
例如:定義一個求絕對值的my_abs函數(shù)
def my_abs(x):
if x>=0
return x
else
return -x
注意:如果沒有return語句,函數(shù)執(zhí)行完畢也會返回結(jié)果,只是結(jié)構(gòu)為none
函數(shù)返回多值
但其實這只是一種假象,python函數(shù)返回的仍然是單一值,python的函數(shù)返回多值其實就是返回一個tuple
遞歸函數(shù):如果一個函數(shù)在內(nèi)部調(diào)用自己本身,這個函數(shù)就是遞歸函數(shù)
例如:計算階乘n!
def fact(n):
if n==1
Return n*fact(n-1)
fact(1)
1
fact(5)
120
知識點:使用遞歸函數(shù)需要注意防止棧溢出。在計算機(jī)中,函數(shù)調(diào)用時通過棧(stack)這種數(shù)據(jù)結(jié)構(gòu)實現(xiàn)的,每當(dāng)進(jìn)入一個函數(shù)調(diào)用,棧就會加一層棧幀,每當(dāng)函數(shù)返回,棧就會減一層棧幀。由于棧的大小不是無限的,所以遞歸調(diào)用的次數(shù)過多,會導(dǎo)致棧溢出。
定義默認(rèn)參數(shù)
例如python自帶的int()函數(shù),其實就有兩個參數(shù),既可以傳一個參數(shù),又可以傳兩個參數(shù)
int(‘123’)
123
int(‘123’,8)
83
注意:int()函數(shù)的第二個參數(shù)蘇是轉(zhuǎn)換進(jìn)制,如果不傳,默認(rèn)是十進(jìn)制(base=10)
知識點:由于函數(shù)的參數(shù)按從左到右的順序匹配。所以默認(rèn)參數(shù)只能定義在必須函數(shù)的后面
定義可變參數(shù)
如果想讓一個函數(shù)能接受任意個參數(shù),我們可以定義一個可變參數(shù):
def fn(args)
print agrs
可變參數(shù)的名字前面有個號,我們可以傳入任意個參數(shù)給可變參數(shù):
fn()
()
fn(‘a(chǎn)’)
(‘a(chǎn)’)
fn(‘a(chǎn)’,’b’,’c’)
(‘a(chǎn)’,’b’,’c’)
可變參數(shù)也不是很神秘,python解釋器會把傳入的一組參數(shù)組裝正一個tuple傳遞給可變參數(shù),因此在函數(shù)內(nèi)部,直接把變量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[:] 只用一個 : ,表示從頭到尾
切片操作還可以制定第三個參數(shù)
L[::2] 第三個參數(shù)表示每N個取一個,L[::2]表示每兩個元素取出來一個,即隔一個取一個
倒序切片:
記住倒數(shù)第一個元素的索引是-1,倒序切片包含起始索引,不包含結(jié)束索引
總結(jié)
以上是生活随笔為你收集整理的python自学笔记_python学习笔记(4)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 研究内容、研究方法、研究方案的区别与联系
- 下一篇: WIFI网络访问(一)