閉包(closure)是函數(shù)式編程的重要的語(yǔ)法結(jié)構(gòu)。函數(shù)式編程是一種編程范式(而面向過(guò)程編程和面向?qū)ο缶幊桃捕际蔷幊谭妒?。在面向過(guò)程編程中,我們見到過(guò)函數(shù)(function);在面向?qū)ο缶幊讨校覀円娺^(guò)對(duì)象(object)。函數(shù)和對(duì)象的根本目的是以某種邏輯方式組織代碼,并提高代碼的可重復(fù)使用性(reusability)。閉包也是一種組織代碼的結(jié)構(gòu),它同樣提高了代碼的可重復(fù)使用性。不同的語(yǔ)言實(shí)現(xiàn)閉包的方式不同。Python以函數(shù)對(duì)象為基礎(chǔ),為閉包這一語(yǔ)法結(jié)
系統(tǒng) 2019-09-27 17:45:45 1706
測(cè)試代碼如下:復(fù)制代碼代碼如下:classModelMetaClass(type):def__new__(cls,name,base,attrs):logging.info("clsis:"+str(cls))logging.info("nameis:"+str(name))logging.info("baseis:"+str(base))logging.info("attrsis:"+str(attrs))returntype.__new__(cls,n
系統(tǒng) 2019-09-27 17:45:40 1706
今天在寫爬蟲程序的時(shí)候由于要翻頁(yè),做除法分頁(yè)的時(shí)候出現(xiàn)了復(fù)制代碼代碼如下:totalCount='100'totalPage=int(totalCount)/20ValueError:invalidliteralforint()withbase10的錯(cuò)誤網(wǎng)上同樣的錯(cuò)誤有人建議用round(float(“1.0″)),但是解決不了我這個(gè)問(wèn)題,round(float(“1.0″))是用于解決浮點(diǎn)數(shù)轉(zhuǎn)換為整形數(shù)的,而我這個(gè)則是因?yàn)樵址D(zhuǎn)換為整形后做除法,雖然
系統(tǒng) 2019-09-27 17:45:38 1706
python3批量刪除豆瓣分組下的好友的實(shí)現(xiàn)代碼"""python3批量刪除豆瓣分組下的好友2016年6月7日03:43:42codegay我兩年前一時(shí)沖動(dòng)在豆瓣關(guān)注了很多豆瓣的員工,好多,有四百個(gè)。我現(xiàn)在一時(shí)沖動(dòng)想取消關(guān)注...,寫這么一個(gè)腳本可以用來(lái)加快刪除的速度。cookies還是直接從chrome讀取出來(lái)用,參考我之前剛寫的代碼python3從chrome瀏覽器讀取cookie,"""importosimportsqlite3importreimp
系統(tǒng) 2019-09-27 17:38:28 1706
寫程序經(jīng)常需要用到從文件或者標(biāo)準(zhǔn)輸入中按行讀取信息,這里匯總一下。方便使用1.C++讀取文件#include#includeintmain(){constchar*in_file="input_file_name";constchar*out_file="output_file_name";FILE*p_in=fopen(in_file,"r");if(!p_in){printf("openfile%sfailed!!!",in_file);return-
系統(tǒng) 2019-09-27 17:38:25 1706
我們將要來(lái)學(xué)習(xí)python的重要概念迭代和迭代器,通過(guò)簡(jiǎn)單實(shí)用的例子如列表迭代器和xrange。可迭代一個(gè)對(duì)象,物理或者虛擬存儲(chǔ)的序列。list,tuple,strins,dicttionary,set以及生成器對(duì)象都是可迭代的,整型數(shù)是不可迭代的。如果你不確定哪個(gè)可迭代哪個(gè)不可以,你需要用python內(nèi)建的iter()來(lái)幫忙。>>>iter([1,2,3])>>>iter({1:2,2:4})>>>iter(1234)Traceback(mostrece
系統(tǒng) 2019-09-27 17:38:24 1706
我們都知道并發(fā)(不是并行)編程目前有四種方式,多進(jìn)程,多線程,異步,和協(xié)程。多進(jìn)程編程在python中有類似C的os.fork,當(dāng)然還有更高層封裝的multiprocessing標(biāo)準(zhǔn)庫(kù),在之前寫過(guò)的python高可用程序設(shè)計(jì)方法中提供了類似nginx中masterprocess和workerprocess間信號(hào)處理的方式,保證了業(yè)務(wù)進(jìn)程的退出可以被主進(jìn)程感知。多線程編程python中有Thread和threading,在linux下所謂的線程,實(shí)際上是LW
系統(tǒng) 2019-09-27 17:38:17 1706
最近學(xué)習(xí)了python的一些服務(wù)器端編程,記錄在此。發(fā)送get/post請(qǐng)求#coding:utf-8importhttplib,urllib#加載模塊#urllib可以打開網(wǎng)站去拿#res=urllib.urlopen('http://baidu.com');#printres.headers#定義需要進(jìn)行發(fā)送的數(shù)據(jù)params=urllib.urlencode({'param':'6'});#定義一些文件頭headers={"Content-Type"
系統(tǒng) 2019-09-27 17:38:17 1706
實(shí)例如下:defTestDic1():dict2={'aa':222,11:222}forvalindict2:printvaldefTestDic2():dict2={'aa':222,11:222}for(key,val)indict2.items():printkey,":",valdefTestList1():list=[1,2,3,4,5,3,2,'ada','fs3']foriinrange(len(list)):printlist[i]def
系統(tǒng) 2019-09-27 17:38:16 1706
1.getattr()函數(shù)是Python自省的核心函數(shù),具體使用大體如下:classA:def__init__(self):self.name='zhangjing'#self.age='24'defmethod(self):print"methodprint"Instance=A()printgetattr(Instance,'name,'notfind')#如果Instance對(duì)象中有屬性name則打印self.name的值,否則打印'notfind'
系統(tǒng) 2019-09-27 17:38:16 1706