国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

教女朋友學(xué)Python(5)——快到碗里來

2019-11-14 12:31:16
字體:
供稿:網(wǎng)友
我本來不會(huì)Python,一邊學(xué)一邊試圖以最簡單方式來解釋編程和Python,讓各位理工男可以拿去教自己的女朋友。上期我們把網(wǎng)址準(zhǔn)備好了:url = "http://cn.bing.com/images/search?q=" + name + "&first=" + str(first) +"&count=" + str(count)其中,name、first、count是三個(gè)變量,接下來我們就應(yīng)該從這個(gè)網(wǎng)址獲取數(shù)據(jù)啦,還記得當(dāng)name="胡歌",first=1,count=28時(shí)候得到的數(shù)據(jù)展示出來的網(wǎng)頁有多丑嘛?現(xiàn)在你們就要自己來獲取啦!然而,我知道此時(shí)的你肯定是一臉懵逼,WTF?我就知道一個(gè)網(wǎng)址,哪知道怎么獲取數(shù)據(jù)?不用擔(dān)心,Python已經(jīng)為你準(zhǔn)備好了,整個(gè)獲取過程只需要兩行代碼,不過在我貼出代碼之前,先說一點(diǎn)網(wǎng)頁的基本知識,方便理解那兩行代碼。我:我們是怎么訪問網(wǎng)頁的呢?小白:O(∩_∩)O用360瀏覽器。我:。。。。那用瀏覽器第一步呢?小白:╮(╯▽╰)╭打開瀏覽器?我:然后呢?小白:o(* ̄▽ ̄*)o百度想要的東西我:然后呢?小白:打開搜索的結(jié)果。我想大概大部分人都是這么用瀏覽器的吧,其實(shí)這里面隱藏了一個(gè)信息,就是,小白先得點(diǎn)擊搜索,才會(huì)出搜索結(jié)果。小白要先點(diǎn)擊搜索結(jié)果,才會(huì)跳轉(zhuǎn)到某個(gè)網(wǎng)頁。再抽象一點(diǎn)點(diǎn),就是我先要操作一下瀏覽器,讓瀏覽器去干了什么,瀏覽器才會(huì)給我想要的結(jié)果。那么瀏覽器干了什么呢?瀏覽器去跟網(wǎng)頁說,快到碗里來!具體過程如下:小白:喂,瀏覽器,按這個(gè)電話(網(wǎng)址)給我叫個(gè)姑娘(網(wǎng)頁)回來!瀏覽器:喂,服務(wù)器么。服務(wù)器:蘑菇,你哪路?什么價(jià)?(黑話接頭,為了安全,服務(wù)器很多時(shí)候都需要驗(yàn)證)瀏覽器:哈!想啥來啥,想吃奶來了媽媽,想娘家的人,孩子他舅舅來了!(也得用黑話接,不然不讓進(jìn))服務(wù)器:大爺您要什么樣的姑娘隨便挑!瀏覽器:就要8號了,過來吧。網(wǎng)頁:打了個(gè)車(網(wǎng)絡(luò)傳輸),走了大半夜(網(wǎng)速慢),到小白家。瀏覽器:小白君,美人給您帶回來了。小白一看:這特么是誰呀,長得跟鬼一樣?(就是我們在第三期里說的那些數(shù)據(jù))瀏覽器:小白君別急,現(xiàn)在掃黃打非嚴(yán),為了怕被抓到,易容了的,我來捯飭捯飭(把數(shù)據(jù)渲染成網(wǎng)頁)。小白:噢噢噢,這么一看,真是天香國色呀o(* ̄3 ̄)oo(* ̄3 ̄)o。網(wǎng)頁:o(* ̄3 ̄)oo(* ̄3 ̄)o。嗯,訪問網(wǎng)站的過程,跟這個(gè)差不多,首先,用戶給瀏覽器一個(gè)網(wǎng)址,讓瀏覽器去找服務(wù)器要數(shù)據(jù),服務(wù)器通過之后把數(shù)據(jù)傳給瀏覽器,瀏覽器將數(shù)據(jù)渲染成網(wǎng)頁,呈現(xiàn)給用戶。現(xiàn)在,我們不需要呈現(xiàn)成網(wǎng)頁,只需要從數(shù)據(jù)里面得到照片就可以了,所以我們只需要通過url獲取數(shù)據(jù)就OK了。那么再看下面的兩行代碼就容易了:
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)注我的微信公眾號獲取最新文章:


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 三门县| 包头市| 吴堡县| 贡觉县| 嘉鱼县| 巴南区| 玉田县| 凤翔县| 平阳县| 沙洋县| 辰溪县| 台东县| 渝中区| 武强县| 将乐县| 台前县| 吉林市| 锡林浩特市| 中山市| 政和县| 崇文区| 当雄县| 通渭县| 安达市| 固镇县| 平谷区| 左权县| 伊通| 满城县| 拉萨市| 咸阳市| 体育| 宣武区| 丹阳市| 焦作市| 平南县| 汉寿县| 陆川县| 化州市| 扎鲁特旗| 定安县|