在學(xué)習(xí)Python的過(guò)程中,有幾個(gè)比較重要的內(nèi)置函數(shù):help()函數(shù)、dir()函數(shù)、input()與raw_input()函數(shù)、print()函數(shù)、type()函數(shù)。
創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站制作、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿(mǎn)足客戶(hù)于互聯(lián)網(wǎng)時(shí)代的元寶網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
第一、help()函數(shù)
Help()函數(shù)的參數(shù)分為兩種:如果傳一個(gè)字符串做參數(shù)的話,它會(huì)自動(dòng)搜索以這個(gè)字符串命名的模塊、方法等;如果傳入的是一個(gè)對(duì)象,就會(huì)顯示這個(gè)對(duì)象的類(lèi)型的幫助。比如輸入help(‘print’),它就會(huì)尋找以‘print’為名的模塊、類(lèi)等,找不到就會(huì)看到提示信息;而print在Python里是一個(gè)保留字,和pass、return同等,而非對(duì)象,所以help(print)也會(huì)報(bào)錯(cuò)。
第二、dir()函數(shù)
dir()函數(shù)返回任意對(duì)象的屬性和方法列表,包含模塊對(duì)象、函數(shù)對(duì)象、字符串對(duì)象、列表對(duì)象、字典對(duì)象等。盡管查找和導(dǎo)入模塊相對(duì)容易,但是記住每個(gè)模塊包含什么卻不是這么簡(jiǎn)單,您并不希望總是必須查看源代碼來(lái)找出答案。Python提供了一種方法,可以使用內(nèi)置的dir()函數(shù)來(lái)檢查模塊的內(nèi)容,當(dāng)你為dir()提供一個(gè)模塊名的時(shí)候,它返回模塊定義的屬性列表。dir()函數(shù)適用于所有對(duì)象的類(lèi)型,包含字符串、整數(shù)、列表、元組、字典、函數(shù)、定制類(lèi)、類(lèi)實(shí)例和類(lèi)方法。
第三、input與raw_input函數(shù)
都是用于讀取用戶(hù)輸入的,不同的是input()函數(shù)期望用戶(hù)輸入的是一個(gè)有效的表達(dá)式,而raw_input()函數(shù)是將用戶(hù)的輸入包裝成一個(gè)字符串。
第四、Print()函數(shù)
Print在Python3版本之間是作為Python語(yǔ)句使用的,在Python3里print是作為函數(shù)使用的。
第五、type()函數(shù)
Type()函數(shù)返回任意對(duì)象的數(shù)據(jù)類(lèi)型。在types模塊中列出了可能的數(shù)據(jù)類(lèi)型,這對(duì)于處理多種數(shù)據(jù)類(lèi)型的函數(shù)非常有用,它通過(guò)返回類(lèi)型對(duì)象來(lái)做到這一點(diǎn),可以將這個(gè)類(lèi)型對(duì)象與types模塊中定義類(lèi)型相比較。
Python內(nèi)置函數(shù)有很多,為大家推薦5個(gè)神仙級(jí)的內(nèi)置函數(shù):
(1)Lambda函數(shù)
用于創(chuàng)建匿名函數(shù),即沒(méi)有名稱(chēng)的函數(shù)。它只是一個(gè)表達(dá)式,函數(shù)體比def簡(jiǎn)單很多。當(dāng)我們需要?jiǎng)?chuàng)建一個(gè)函數(shù)來(lái)執(zhí)行單個(gè)操作并且可以在一行中編寫(xiě)時(shí),就可以用到匿名函數(shù)了。
Lamdba的主體是一個(gè)表達(dá)式,而不是一個(gè)代碼塊。僅僅能在lambda表達(dá)式中封裝有限的邏輯進(jìn)去。
利用Lamdba函數(shù),往往可以將代碼簡(jiǎn)化許多。
(2)Map函數(shù)
會(huì)將一個(gè)函數(shù)映射到一個(gè)輸入列表的所有元素上,比如我們先創(chuàng)建了一個(gè)函數(shù)來(lái)返回一個(gè)大寫(xiě)的輸入單詞,然后將此函數(shù)應(yīng)有到列表colors中的所有元素。
我們還可以使用匿名函數(shù)lamdba來(lái)配合map函數(shù),這樣可以更加精簡(jiǎn)。
(3)Reduce函數(shù)
當(dāng)需要對(duì)一個(gè)列表進(jìn)行一些計(jì)算并返回結(jié)果時(shí),reduce()是個(gè)非常有用的函數(shù)。舉個(gè)例子,當(dāng)需要計(jì)算一個(gè)整數(shù)列表所有元素的乘積時(shí),即可使用reduce函數(shù)實(shí)現(xiàn)。
它與函數(shù)的最大的區(qū)別就是,reduce()里的映射函數(shù)(function)接收兩個(gè)參數(shù),而map接收一個(gè)參數(shù)。
(4)enumerate函數(shù)
用于將一個(gè)可遍歷的數(shù)據(jù)對(duì)象(如列表、元組或字符串)組合為一個(gè)索引序列,同時(shí)列出數(shù)據(jù)和數(shù)據(jù)下標(biāo),一般用在for循環(huán)當(dāng)中。
它的兩個(gè)參數(shù),一個(gè)是序列、迭代器或其他支持迭代對(duì)象;另一個(gè)是下標(biāo)起始位置,默認(rèn)情況從0開(kāi)始,也可以自定義計(jì)數(shù)器的起始編號(hào)。
(5)Zip函數(shù)
用于將可迭代的對(duì)象作為參數(shù),將對(duì)象中對(duì)應(yīng)的元素打包成一個(gè)個(gè)元組,然后返回由這些元組組成的列表
當(dāng)我們使用zip()函數(shù)時(shí),如果各個(gè)迭代器的元素個(gè)數(shù)不一致,則返回列表長(zhǎng)度與最短的對(duì)象相同。
range()函數(shù)的用法如下:
(1)range(stop)
創(chuàng)建一個(gè)(0,stop)之間的整數(shù)序列,步長(zhǎng)為1。
(2)range(start,stop)
創(chuàng)建一個(gè)(start,stop)之間的整數(shù)序列,步長(zhǎng)為1。
(3)range(start,stop,step)
創(chuàng)建一個(gè)[start,stop)之間的整數(shù)序列,步長(zhǎng)為step。
參數(shù)介紹:
start:表示從返回序列的起始編號(hào),默認(rèn)情況下從0開(kāi)始。
stop:表示生成最多但不包括此數(shù)字的數(shù)字。
step:指的是序列中每個(gè)數(shù)字之間的差異,默認(rèn)值為1。
range()是Python的內(nèi)置函數(shù),在用戶(hù)需要執(zhí)行特定次數(shù)的操作時(shí)使用它,表示循環(huán)的意思。內(nèi)置函數(shù)range()可用于以列表的形式生成數(shù)字序列。在range()函數(shù)中最常見(jiàn)用法是使用for和while循環(huán)迭代序列類(lèi)型(List,string等)。
簡(jiǎn)單的來(lái)說(shuō),range()函數(shù)允許用戶(hù)在給定范圍內(nèi)生成一系列數(shù)字。根據(jù)用戶(hù)傳遞給函數(shù)的參數(shù)數(shù)量,用戶(hù)可以決定該系列數(shù)字的開(kāi)始和結(jié)束位置以及一個(gè)數(shù)字與下一個(gè)數(shù)字之間的差異有多大。
dir()
不加任何參數(shù),便可查看命名空間內(nèi)所有的變量名、函數(shù)名以及導(dǎo)入的模塊的名稱(chēng)
返回的是一個(gè)列表
sorted(iterable,cmp,key,reverse)
參數(shù):iterable可以是list或者iterator;
cmp是帶兩個(gè)參數(shù)的比較函數(shù);
key
是帶一個(gè)參數(shù)的函數(shù);
reverse為False或者True;
舉例說(shuō)明
(1)用cmp函數(shù)排序
list1
=
[('david',
90),
('mary',90),
('sara',80),('lily',95)]
sorted(list1,cmp
=
lambda
x,y:
cmp(x[0],y[0]))
[('david',
90),
('lily',
95),
('mary',
90),
('sara',
80)]
sorted(list1,cmp
=
lambda
x,y:
cmp(x[1],y[1]))
[('sara',
80),
('david',
90),
('mary',
90),
('lily',
95)]
(2)用key函數(shù)排序
list1
=
[('david',
90),
('mary',90),
('sara',80),('lily',95)]
sorted(list1,key
=
lambda
list1:
list1[0])
[('david',
90),
('lily',
95),
('mary',
90),
('sara',
80)]
sorted(list1,key
=
lambda
list1:
list1[1])
[('sara',
80),
('david',
90),
('mary',
90),
('lily',
95)]
(3)用reverse排序
sorted(list1,reverse
=
True)
[('sara',
80),
('mary',
90),
('lily',
95),
('david',
90)]
(4)用operator.itemgetter函數(shù)排序
from
operator
import
itemgetter
sorted(list1,
key=itemgetter(1))
[('sara',
80),
('david',
90),
('mary',
90),
('lily',
95)]
sorted(list1,
key=itemgetter(0))
[('david',
90),
('lily',
95),
('mary',
90),
('sara',
80)]
介紹operator.itemgetter函數(shù)
import
operator
a
=
[1,2,3]
b
=
operator.itemgetter(0)
b(a)
1
operator.itemgetter函數(shù)獲取的不是值,而是定義了一個(gè)函數(shù)。
(5)多級(jí)排序
sorted(list1,
key=itemgetter(0,1))
[('david',
90),
('lily',
95),
('mary',
90),
('sara',
80)]
空間復(fù)雜度是O(n)
1、函數(shù)的分類(lèi):
內(nèi)置函數(shù):python內(nèi)嵌的一些函數(shù)。
匿名函數(shù):一行代碼實(shí)現(xiàn)一個(gè)函數(shù)功能。
遞歸函數(shù)
自定義函數(shù):根據(jù)自己的需求,來(lái)進(jìn)行定義函數(shù)。
2、方法的分類(lèi):
普通方法:直接用self調(diào)用的方法。
私有方法:__函數(shù)名,只能在類(lèi)中被調(diào)用的方法。
屬性方法:@property,將方法偽裝成為屬性,讓代碼看起來(lái)更合理。
特殊方法(雙下劃線方法):以__init__為例,是用來(lái)封裝實(shí)例化對(duì)象的屬性,只要是實(shí)例化對(duì)象就一定會(huì)執(zhí)行__init方法,如果對(duì)象子類(lèi)中沒(méi)有則會(huì)尋找父類(lèi)(超類(lèi)),如果父類(lèi)(超類(lèi))也沒(méi)有,則直接繼承object(python 3.x)類(lèi),執(zhí)行類(lèi)中的__init__方法。類(lèi)方法:通過(guò)類(lèi)名的調(diào)用去操作公共模板中的屬性和方法。
靜態(tài)方法:不用傳入類(lèi)空間、對(duì)象的方法, 作用是保證代碼的一致性,規(guī)范性,可以完全獨(dú)立類(lèi)外的一個(gè)方法,但是為了代碼的一致性統(tǒng)一的放到某個(gè)模塊(py文件)中。
其次,從作用域的角度來(lái)分析:
(1)函數(shù)作用域:從函數(shù)調(diào)用開(kāi)始至函數(shù)執(zhí)行完成,返回給調(diào)用者后,在執(zhí)行過(guò)程中開(kāi)辟的空間會(huì)自動(dòng)釋放,也就是說(shuō)函數(shù)執(zhí)行完成后,函數(shù)體內(nèi)部通過(guò)賦值等方式修改變量的值不會(huì)保留,會(huì)隨著返回給調(diào)用者后,開(kāi)辟的空間會(huì)自動(dòng)釋放。
(2)方法作用域:通過(guò)實(shí)例化的對(duì)象進(jìn)行方法的調(diào)用,調(diào)用后開(kāi)辟的空間不會(huì)釋放,也就是說(shuō)調(diào)用方法中對(duì)變量的修改值會(huì)一直保留。
最后,調(diào)用的方式不同。
(1)函數(shù):通過(guò)“函數(shù)名()”的方式進(jìn)行調(diào)用。
(2)方法:通過(guò)“對(duì)象.方法名”的方式進(jìn)行調(diào)用。