列表檀葛、元組和字符串的共同點(diǎn):
1. 可以通過索引得到每一個元素玩祟;
2. 默認(rèn)索引值總是從0開始;
3. 可以通過分片的方法得到一個范圍內(nèi)的元素的集合驻谆;
4. 有很多共同的操作符(重復(fù)操作符卵凑、拼接操作符、成員關(guān)系操作符)
list([literable])把一個可迭代對象轉(zhuǎn)換為列表胜臊。例如:
list()生成一個空列表勺卢。
tuple([literable])把一個可迭代對象轉(zhuǎn)換為元組
max:返回序列或參數(shù)集合中的max值
搜索出的結(jié)果是ASCII碼的最小。
注意:使用max或min的方法必須保證比較的對象是同類的象对,而不能是str和int的比較黑忱。
sum()求和
sum(numbers,8):表示把列表求和之后再加上8。
sorted:排序
enumerate的使用:(忽略中間的輸入錯誤)
zip:同位置的元素合成一組
P18
函數(shù)勒魔、對象甫煞、模塊
函數(shù):
定義函數(shù):使用def(eg.? ?def Myfirstfunction(): )
def 函數(shù)名稱():不能漏了括號和冒號
調(diào)用函數(shù)時:
函數(shù)名()(Myfirstfunction())
試著制作簡單的函數(shù)(同理可制作其他):如下,我們嘗試制作一個元素相加的函數(shù)冠绢。
如果要得到字符串拼接而不是真正的相加抚吠,就在兩個整型上分別加上引號即可。如:
我們也可以直接使用return函數(shù)返回結(jié)果而不使用print.
形參和實(shí)參:
形參只是一個形式:比如一開始在定義函數(shù)時弟胀,function(name):xxxx楷力,
這時候的name就是一個形參喊式,而我們調(diào)用函數(shù)時真正引用的字符為實(shí)參。
設(shè)置關(guān)鍵字參數(shù):
默認(rèn)參數(shù)
收集參數(shù):(可變參數(shù))加*星號萧朝,表示不確定括號內(nèi)會有多少個參數(shù)岔留,這樣調(diào)用時可以根據(jù)實(shí)際情況選擇參數(shù)數(shù)量,如下圖:
如果有收集參數(shù)之后還要添加其他的參數(shù)检柬,那么需要把其他的參數(shù)也設(shè)置為默認(rèn)的參數(shù)献联,比如:
注意函數(shù)和過程的區(qū)別:
!有返回值的為函數(shù)何址,沒有返回值的為單純的過程~
python可以返回多個值:列表
局部變量:local variable
全局變量:global variable
我們可以這樣使用函數(shù):
當(dāng)我們要嘗試print final_price的時候里逆,我們發(fā)現(xiàn)
python顯示final_price not defined?為什么呢头朱?這就是局部變量运悲,意思是final price這個變量只在discount中的函數(shù)才是有效的,出了這個函數(shù)則不ok项钮!
總結(jié):在函數(shù)中定義的參數(shù)和變量都稱為局部變量(意思為離開這個函數(shù)就無效)班眯,因?yàn)樗麄兲幱谕粭V校瑘?zhí)行完語句之后變量所在的空間已經(jīng)被刪除烁巫。
在這個例子中署隘,全局變量為original_price和discount_rate(在函數(shù)之外),所以即使在其他地方(包括函數(shù)范圍內(nèi)也可以調(diào)用亚隙,比如)
我們把兩種情況放在一起更好比較磁餐。在下圖中,第三行代碼輸入打印original_price阿弃,發(fā)現(xiàn)可以實(shí)現(xiàn)诊霹,但是最后一行代碼的final price卻打印不出來,這就是全局變量和局部變量的差距(局部變量好小氣orz)
如果我們要嘗試在函數(shù)內(nèi)部修改一個全局變量渣淳,python會新建一個和這個全局變量相同的變量反映在函數(shù)中脾还,但在函數(shù)外,這個全局變量并不會改變入愧。
課后題:
1. 如何在函數(shù)中修改全局變量的值鄙漏?
-->使用global關(guān)鍵字。
2. 如何修改外部函數(shù)中的局部變量:
-->nonlocal