response = request.urlopen(url)data = response.read()了解了上述過程,來理解這個(gè)代碼是不是就很簡單了。首先,我們通過request網(wǎng)址url創(chuàng)建了一個(gè)變量response,然后從response中讀取數(shù)據(jù)。那么現(xiàn)問題來了,request我們可沒有定義過,從哪冒出來的?他是什么東西?后面跟個(gè).urlopen()是什么意思?response是我們自己定義的一個(gè)變量,后來也跟了一個(gè).read(),這又是什么鬼,是不是所有的變量都可以跟呢?除了第一個(gè)問題,全部不解釋!為什么?因?yàn)楝F(xiàn)在就解釋了,以后就沒得寫了。而且只有兩行代碼,看著眼熟就行,現(xiàn)在先記著,以后說到相關(guān)的知識點(diǎn)了解釋。request從哪來的呢?從urllib模塊里面來的!urllib從哪來的?python自帶的!模塊是什么?隨著項(xiàng)目越來越大,代碼越來越多,就需要分組進(jìn)行維護(hù)管理,這就是模塊的來由,在python中,一個(gè).py文件就是一個(gè)模塊!怎么使用別人寫的模塊?引用進(jìn)來,比如我們要引用urllib整個(gè)模塊,就需要在文件開頭加入import urllib;如果只引用urllib模塊中的requset這一部分,就在文件開頭加from urllib import request。好了,現(xiàn)在輪到我提問題了,假設(shè),我要同時(shí)獲取三個(gè)不同url的數(shù)據(jù),怎么辦?答案:response1 = request.urlopen(url1)data1 = response.read()response2 = request.urlopen(url2)data2 = response.read()response3 = request.urlopen(url3)data 3= response.read()輕松自在,可以實(shí)現(xiàn),滿分!如果阿里的程序員靠代碼行數(shù)來算工資,你能寫到馬云爸爸破產(chǎn)!但是這特么也太蠢了。還記得我們上期說的函數(shù)么,f(x)=3x + 111。當(dāng)x有很多的時(shí)候,使用f(x1),f(x2)。。。f(xn)比使用3x1+111。。。。3xn+111是不是清爽很多。所以到了編程里面,會(huì)把一段需要經(jīng)常重復(fù)的代碼封裝在一起,構(gòu)成一個(gè)函數(shù),比如我們的那一段代碼,是為了獲得某個(gè)網(wǎng)址的數(shù)據(jù)(HTML)的,我們就取一個(gè)名字叫getHTML(url)={response = request.urlopen(url)data = response.read()}以后url2,url3就用getHTML(url2),getHTML(url3)就可以了。但是,這么寫,是數(shù)學(xué)里面的做法,在python里面,是這樣的:一個(gè)個(gè)來說:def,固定的,不變。函數(shù)名:跟變量名一樣,隨便自己取,不過,最好是能表明他的功能的。參數(shù):用括號闊起來,函數(shù)可以沒有參數(shù),也可以有多個(gè)參數(shù)。至于python里面的默認(rèn)參數(shù),可變參數(shù),關(guān)鍵字參數(shù),命名關(guān)鍵字參數(shù)傻的,本文全部不講,為什么,因?yàn)楸卷?xiàng)目用不著。冒號:固定的,英文字符,不要打成了中文字符的冒號。縮進(jìn):還記得上期說過,python里面用縮進(jìn)表示代碼之間的邏輯關(guān)系。現(xiàn)在看就比較明顯了吧,下面的函數(shù)體和返回值都是這個(gè)函數(shù)的內(nèi)容,所以縮在他的羽翼之下。至于縮進(jìn)多少,看心情,沒有規(guī)定,但是同一邏輯層級的代碼縮進(jìn)一定要一樣。不過習(xí)慣上是一個(gè)tab鍵。函數(shù)體:就是我們要執(zhí)行的任務(wù)了返回值:比如上文說的數(shù)學(xué)上的函數(shù),a=f(3),編程的函數(shù)也是一樣,只不過用return標(biāo)記。想返回data,就return data。如果返回值為None,可以簡寫為return。
所以我們的代碼就改版啦:
from urllib import requestname = "胡歌"first = 1count = 28url = "http://cn.bing.com/images/search?q=" +name + "&first=" + str(first) +"&count=" + str(count)def getHTML(url): response = request.urlopen(url) data = response.read() return datahtml = getHTML(url)好了,函數(shù)已經(jīng)講完了。但是有沒有同學(xué)發(fā)現(xiàn),我這期一點(diǎn)動(dòng)圖都沒有,從頭到尾沒有運(yùn)行?有沒有勤學(xué)苦練的同學(xué)自己運(yùn)行了?哈哈,因?yàn)檫\(yùn)行不成功的,為什么呢?下期繼續(xù)。
歡迎關(guān)注我的微信公眾號獲取最新文章:
新聞熱點(diǎn)
疑難解答
圖片精選