麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

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

2019-11-14 12:28:30
字體:
來源:轉載
供稿:網友
我本來不會Python,一邊學一邊試圖以最簡單方式來解釋編程和Python,讓各位理工男可以拿去教自己的女朋友。上期我們把網址準備好了:url = "http://cn.bing.com/images/search?q=" + name + "&first=" + str(first) +"&count=" + str(count)其中,name、first、count是三個變量,接下來我們就應該從這個網址獲取數據啦,還記得當name="胡歌",first=1,count=28時候得到的數據展示出來的網頁有多丑嘛?現在你們就要自己來獲取啦!然而,我知道此時的你肯定是一臉懵逼,WTF?我就知道一個網址,哪知道怎么獲取數據?不用擔心,Python已經為你準備好了,整個獲取過程只需要兩行代碼,不過在我貼出代碼之前,先說一點網頁的基本知識,方便理解那兩行代碼。我:我們是怎么訪問網頁的呢?小白:O(∩_∩)O用360瀏覽器。我:。。。。那用瀏覽器第一步呢?小白:╮(╯▽╰)╭打開瀏覽器?我:然后呢?小白:o(* ̄▽ ̄*)o百度想要的東西我:然后呢?小白:打開搜索的結果。我想大概大部分人都是這么用瀏覽器的吧,其實這里面隱藏了一個信息,就是,小白先得點擊搜索,才會出搜索結果。小白要先點擊搜索結果,才會跳轉到某個網頁。再抽象一點點,就是我先要操作一下瀏覽器,讓瀏覽器去干了什么,瀏覽器才會給我想要的結果。那么瀏覽器干了什么呢?瀏覽器去跟網頁說,快到碗里來!具體過程如下:小白:喂,瀏覽器,按這個電話(網址)給我叫個姑娘(網頁)回來!瀏覽器:喂,服務器么。服務器:蘑菇,你哪路?什么價?(黑話接頭,為了安全,服務器很多時候都需要驗證)瀏覽器:哈!想啥來啥,想吃奶來了媽媽,想娘家的人,孩子他舅舅來了!(也得用黑話接,不然不讓進)服務器:大爺您要什么樣的姑娘隨便挑!瀏覽器:就要8號了,過來吧。網頁:打了個車(網絡傳輸),走了大半夜(網速慢),到小白家。瀏覽器:小白君,美人給您帶回來了。小白一看:這特么是誰呀,長得跟鬼一樣?(就是我們在第三期里說的那些數據)瀏覽器:小白君別急,現在掃黃打非嚴,為了怕被抓到,易容了的,我來捯飭捯飭(把數據渲染成網頁)。小白:噢噢噢,這么一看,真是天香國色呀o(* ̄3 ̄)oo(* ̄3 ̄)o。網頁:o(* ̄3 ̄)oo(* ̄3 ̄)o。嗯,訪問網站的過程,跟這個差不多,首先,用戶給瀏覽器一個網址,讓瀏覽器去找服務器要數據,服務器通過之后把數據傳給瀏覽器,瀏覽器將數據渲染成網頁,呈現給用戶。現在,我們不需要呈現成網頁,只需要從數據里面得到照片就可以了,所以我們只需要通過url獲取數據就OK了。那么再看下面的兩行代碼就容易了:
response = request.urlopen(url)data = response.read()了解了上述過程,來理解這個代碼是不是就很簡單了。首先,我們通過request網址url創建了一個變量response,然后從response中讀取數據。那么現問題來了,request我們可沒有定義過,從哪冒出來的?他是什么東西?后面跟個.urlopen()是什么意思?response是我們自己定義的一個變量,后來也跟了一個.read(),這又是什么鬼,是不是所有的變量都可以跟呢?除了第一個問題,全部不解釋!為什么?因為現在就解釋了,以后就沒得寫了。而且只有兩行代碼,看著眼熟就行,現在先記著,以后說到相關的知識點了解釋。request從哪來的呢?從urllib模塊里面來的!urllib從哪來的?python自帶的!模塊是什么?隨著項目越來越大,代碼越來越多,就需要分組進行維護管理,這就是模塊的來由,在python中,一個.py文件就是一個模塊!怎么使用別人寫的模塊?引用進來,比如我們要引用urllib整個模塊,就需要在文件開頭加入import urllib;如果只引用urllib模塊中的requset這一部分,就在文件開頭加from urllib import request。好了,現在輪到我提問題了,假設,我要同時獲取三個不同url的數據,怎么辦?答案:
response1 = request.urlopen(url1)data1 = response.read()response2 = request.urlopen(url2)data2 = response.read()response3 = request.urlopen(url3)data 3= response.read()輕松自在,可以實現,滿分!如果阿里的程序員靠代碼行數來算工資,你能寫到馬云爸爸破產!但是這特么也太蠢了。還記得我們上期說的函數么,f(x)=3x + 111。當x有很多的時候,使用f(x1),f(x2)。。。f(xn)比使用3x1+111。。。。3xn+111是不是清爽很多。所以到了編程里面,會把一段需要經常重復的代碼封裝在一起,構成一個函數,比如我們的那一段代碼,是為了獲得某個網址的數據(HTML)的,我們就取一個名字叫
getHTML(url)={response = request.urlopen(url)data = response.read()}以后url2,url3就用getHTML(url2),getHTML(url3)就可以了。但是,這么寫,是數學里面的做法,在python里面,是這樣的:一個個來說:def,固定的,不變。函數名:跟變量名一樣,隨便自己取,不過,最好是能表明他的功能的。參數:用括號闊起來,函數可以沒有參數,也可以有多個參數。至于python里面的默認參數,可變參數,關鍵字參數,命名關鍵字參數傻的,本文全部不講,為什么,因為本項目用不著。冒號:固定的,英文字符,不要打成了中文字符的冒號。縮進:還記得上期說過,python里面用縮進表示代碼之間的邏輯關系。現在看就比較明顯了吧,下面的函數體和返回值都是這個函數的內容,所以縮在他的羽翼之下。至于縮進多少,看心情,沒有規定,但是同一邏輯層級的代碼縮進一定要一樣。不過習慣上是一個tab鍵。函數體:就是我們要執行的任務了返回值:比如上文說的數學上的函數,a=f(3),編程的函數也是一樣,只不過用return標記。想返回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)

好了,函數已經講完了。但是有沒有同學發現,我這期一點動圖都沒有,從頭到尾沒有運行?有沒有勤學苦練的同學自己運行了?哈哈,因為運行不成功的,為什么呢?下期繼續。

歡迎關注我的微信公眾號獲取最新文章:


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 草草久 | 一级毛片免费版 | 国产精品免费麻豆入口 | 关键词| 久草手机在线视频 | 五月天影院,久久综合, | 亚洲骚妻 | 久久久久久久一区二区三区 | 色淫网站免费视频 | 国产一区二区三区四区五区加勒比 | 欧美另类在线视频 | 午夜精品老牛av一区二区三区 | 欧美毛片在线观看 | 日本不卡二区 | 欧美一级特黄aaaaaaa什 | 91精品国产乱码久久久久久久久 | 日本精品久久久一区二区三区 | 午夜视频久久 | 91香草视频 | 国产一级爱c视频 | 国产成人在线免费视频 | 毛片网站视频 | 国产亲子伦在线观看 | 久久精品视频首页 | 国产精品久久久久久久久久大牛 | 九九热在线视频免费观看 | 国产99精品在线 | 久久无毛| 啪啪激情| 高清国产午夜精品久久久久久 | 精品国产一区二区三区四区在线 | 国产精品视频一区二区噜噜 | 国产精品免费观在线 | 国产精品午夜小视频观看 | 成人免费视频视频在线观看 免费 | 毛片在线免费视频 | 日本中文不卡视频 | 欧美一级黄色片在线观看 | 精品国产91久久久久 | 久草视频国产在线 | 看片一区 |