離畢業(yè)工作還有幾個(gè)月,本來(lái)想早點(diǎn)去公司實(shí)習(xí),無(wú)奈gb學(xué)校不給放。好吧,既然這樣,就學(xué)門(mén)語(yǔ)言。
參考與 http://m.survivalescaperooms.com/vamei ,我是跟著這位博客牛人的博客教程學(xué)的,具體的大家可以到這位博主的博客查看。
記得比較零碎,就將練習(xí)的小例子的代碼以及注釋粘了過(guò)來(lái),主要是為了防止自己忘記,大家湊活著看吧。
#coding:utf-8from logging import exceptionfrom xmlrpclib import DateTime#定義類(lèi)class Info(): age=2class Person(): #括號(hào)內(nèi)的參數(shù)代表繼承與那個(gè)對(duì)象,不代表構(gòu)造方法形參 name='hefei' age=25 def sayHello(self,content): #成員函數(shù)需要包括self參數(shù) PRint content def __init__(self,Info): #相當(dāng)于構(gòu)造方法,用來(lái)在對(duì)象創(chuàng)建時(shí),初始化一些屬性 self.age=Info.age #類(lèi)的繼承,新建類(lèi)時(shí)括號(hào)內(nèi)寫(xiě)被繼承的父類(lèi)class American(Person): shengao=1.88i=Info()a=Person(i)#map的賦值,python里面成為字典,無(wú)非鍵值對(duì)嘛,就是個(gè)mapm={'name':'hefei','age':25} m.setdefault('shenggao')m['shenggao']=1.88for i in m.values(): print i#文件流f=open('test.txt','r')content = f.readline()f.close()print content#循環(huán)語(yǔ)句之幾個(gè)好用的方法S = 'abcdefghijk'for i in range(0,len(S),2): #最后一個(gè)參數(shù)代表跳幾格 print S[i] S = 'abcdefghijk'for (index,char) in enumerate(S): #在對(duì)list或tuple進(jìn)行迭代時(shí),枚舉方法可以獲得列表的索引,index print index print char #zta=[1,2,3]tb=['a','b','c']zipped=zip(ta,tb)print type(zipped),zipped#unzipta1,tb1=zip(*zipped) #*代表解包裹的意思,解包裹就是按照","拆分print ta1,tb1,type(ta1)#再次打包,又變回去了,不過(guò)類(lèi)型變了,呵呵,設(shè)計(jì)的真好result=zip(ta1,tb1)print result#循環(huán)對(duì)象,相當(dāng)于迭代器,一些方法的返回值就可能是一個(gè)循環(huán)對(duì)象,for循環(huán)時(shí),就是調(diào)用循環(huán)對(duì)象的next()方法f=open('test.txt') #這里的文件對(duì)象就是一個(gè)循環(huán)對(duì)象for line in f: print line#生成器:自定義迭代對(duì)象,每次迭代時(shí),遇到y(tǒng)ield返回,下一次迭代時(shí),從上一次yield的地方開(kāi)始迭代def gen(): a=1 yield a a=a+1 yield afor i in gen(): print i#表推導(dǎo),和自定義迭代器一樣,有簡(jiǎn)短的表達(dá)式形式,表推導(dǎo)用來(lái)快速生成所需的列表,感覺(jué)沒(méi)有多大用途。L = []for x in range(10): L.append(x**2)print Lxl = [1,3,5]yl = [9,12,13]L = [ x**2 for (x,y) in zip(xl,yl) if y > 10]print L#lambda函數(shù),在面向?qū)ο蟮氖澜缋铮瘮?shù)也是對(duì)象func=lambda x,y:x+yprint func(1,2)#lambda 表達(dá)式等價(jià)于常規(guī)的方法定義def func(x,y): return x+yprint func(2,3)#幾個(gè)特殊的方法#map 函數(shù):返回一個(gè)列表,結(jié)果為本來(lái)列表經(jīng)方法處理后的列表,返回結(jié)果為[3,5]print map(lambda x:x+1, [2,4])#reduce方法,迭代的思想,將前一個(gè)方法處理后的結(jié)果作為后一個(gè)處理的參數(shù),返回結(jié)果為6print reduce(lambda x,y:x+y, [1,2,3])#異常處理re=iter(range(5)); #使用iter方法定義一個(gè)迭代對(duì)象try: for item in range(10): #迭代10次 print re.next()except StopIteration: print 'here is the end ',itemfinally: print 'this is finaly'#自行拋出一個(gè)異常對(duì)象,raise關(guān)鍵字raise StopIteration#動(dòng)態(tài)類(lèi)型,引用獨(dú)立 下例中,a+2了,雖然b的引用指向a 但,b的值不變#python中對(duì)象分為可變和不可變對(duì)象,像元組(tuple)和字符串都是不可變對(duì)象,其他的是可變對(duì)象,這點(diǎn)和java相同a = 5b = aa = a + 2print 'a=',a,'b=',b#標(biāo)準(zhǔn)庫(kù)中的api介紹print DateTime()#python深入學(xué)習(xí)內(nèi)容#上下文管理器:定義了文件對(duì)象的作用范圍,在with 語(yǔ)句之內(nèi),雖然f沒(méi)有手動(dòng)關(guān)閉,但是只要在with語(yǔ)句塊之外,對(duì)象就自動(dòng)關(guān)閉,其實(shí)就是分別執(zhí)行類(lèi)內(nèi)置函數(shù),__enter__和__exit__方法with open('test.txt','w') as f: print f.closedprint f.closed#可以自定義上下文管理器class Teller(object): def __enter__(self): print 'i m come' def __exit__(self,fexc_type,exc_value,traceback): #這里尼瑪不給提示,這里的__exit__方法需要4個(gè)參數(shù)是必須的 print 'i m out'with Teller() as teller: # with 語(yǔ)句塊內(nèi)一定要有語(yǔ)句,不然解釋不通過(guò) print 'running..'#函數(shù)對(duì)象,就相當(dāng)于java中的內(nèi)部對(duì)象def out_fun(): def in_fun(): return 2 print in_fun()out_fun()#閉包,以下程序運(yùn)行結(jié)果為25,my——line= line_conf()返回一個(gè)函數(shù)對(duì)象,傳入5,進(jìn)行2*5+b的運(yùn)算,使用的b為外部函數(shù)所定義的b的值#這里的b也稱(chēng)為內(nèi)部函數(shù)對(duì)象的環(huán)境變量,一個(gè)函數(shù)對(duì)象和他的環(huán)境變量集合在一起就叫做閉包,環(huán)境變量的取值被放在函數(shù)對(duì)象的_closure_屬性中,該屬性是一個(gè)元組#閉包的優(yōu)勢(shì)在于減少了函數(shù)參數(shù)的設(shè)定,在"并行運(yùn)算中有很大的應(yīng)用"(不是很懂)def line_conf(): b = 15 def line(x): return 2*x+b return line # return a function objectb = 5my_line = line_conf()print(my_line(5))print my_line.__closure__[0].cell_contents#裝飾器,就相當(dāng)于java中的動(dòng)態(tài)代理,修飾原有的方法,讓原有的方法得到加強(qiáng)#定義一個(gè)裝飾器,裝飾器是修飾函數(shù)的,故接收的參數(shù)也是函數(shù)對(duì)象,除此之外,裝飾器還可以修飾類(lèi),代碼如下def decorator(F): def new_F(): print "這是加強(qiáng)內(nèi)容" return F() #這里一定要用F(),不能用F,否則出不了結(jié)果,這里體現(xiàn)了閉包的特性,內(nèi)部函數(shù)調(diào)用了外部的環(huán)境變量 return new_F #返回加工后的函數(shù)對(duì)象@decoratordef F(): print "原來(lái)有的內(nèi)容"F()#裝飾器還可以修飾類(lèi)def decorator1(aClass): class newClass: def __init__(self, age): self.total_display = 0 self.wrapped = aClass(age) def display(self): self.total_display += 1 print("total display", self.total_display) self.wrapped.display() return newClass@decorator1class Bird: def __init__(self, age): self.age = age def display(self): print("My age is",self.age)eagleLord = Bird(5)for i in range(3): eagleLord.display() #使用的一些小技巧#但寫(xiě)有測(cè)試語(yǔ)句的模塊被別的模塊引入的時(shí)候,要想在別的模塊中不運(yùn)行這些測(cè)試語(yǔ)句,在別的模塊中可以這么寫(xiě),if __name__=='__main__':測(cè)試代碼def localMethod(): print "hello"if __name__=='__main__': print 'test content'
未完待續(xù)。。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注