成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Python爬蟲學(xué)習(xí)路線

liaoyg8023 / 1995人閱讀

摘要:以下這些項(xiàng)目,你拿來學(xué)習(xí)學(xué)習(xí)練練手。當(dāng)你每個步驟都能做到很優(yōu)秀的時候,你應(yīng)該考慮如何組合這四個步驟,使你的爬蟲達(dá)到效率最高,也就是所謂的爬蟲策略問題,爬蟲策略學(xué)習(xí)不是一朝一夕的事情,建議多看看一些比較優(yōu)秀的爬蟲的設(shè)計(jì)方案,比如說。

(一)如何學(xué)習(xí)Python

學(xué)習(xí)Python大致可以分為以下幾個階段:

1.剛上手的時候肯定是先過一遍Python最基本的知識,比如說:變量、數(shù)據(jù)結(jié)構(gòu)、語法等,基礎(chǔ)過的很快,基本上1~2周時間就能過完了,我當(dāng)時是在這兒看的基礎(chǔ):Python 簡介 | 菜鳥教程

2.看完基礎(chǔ)后,就是做一些小項(xiàng)目鞏固基礎(chǔ),比方說:做一個終端計(jì)算器,如果實(shí)在找不到什么練手項(xiàng)目,可以在 Codecademy - learn to code, interactively, for free 上面進(jìn)行練習(xí)。

如果時間充裕的話可以買一本講Python基礎(chǔ)的書籍比如《Python編程》,閱讀這些書籍,在鞏固一遍基礎(chǔ)的同時你會發(fā)現(xiàn)自己諸多沒有學(xué)習(xí)到的邊邊角角,這一步是對自己基礎(chǔ)知識的補(bǔ)充。

4.Python庫是Python的精華所在,可以說Python庫組成并且造就了Python,Python庫是Python開發(fā)者的利器,所以學(xué)習(xí)Python庫就顯得尤為重要:The Python Standard Library ,Python庫很多,如果你沒有時間全部看完,不妨學(xué)習(xí)一遍常用的Python庫:Python常用庫

5.Python庫是開發(fā)者利器,用這些庫你可以做很多很多東西,最常見的網(wǎng)絡(luò)爬蟲、自然語言處理、圖像識別等等,這些領(lǐng)域都有很強(qiáng)大的Python庫做支持,所以當(dāng)你學(xué)了Python庫之后,一定要第一時間進(jìn)行練習(xí)。

6.學(xué)習(xí)使用了這些Python庫,此時的你應(yīng)該是對Python十分滿意,也十分激動能遇到這樣的語言,就是這個時候不妨開始學(xué)習(xí)Python數(shù)據(jù)結(jié)構(gòu)與算法,Python設(shè)計(jì)模式,這是你進(jìn)一步學(xué)習(xí)的一個重要步驟:faif/python-patterns

7.當(dāng)度過艱難的第六步,此時選擇你要研究的方向,如果你想做后端開發(fā),不妨研究研究Django,再往后,就是你自己自由發(fā)揮了

(二)一些Python免費(fèi)課程推薦

以下課程都為免費(fèi)課程

1.python零基礎(chǔ)相關(guān)

適用人群:Python零基礎(chǔ)的初學(xué)者、Web開發(fā)程序員、運(yùn)維人員、有志于從事互聯(lián)網(wǎng)行業(yè)以及各領(lǐng)域應(yīng)用Python的人群,我們的python,q,qun,784758214 行業(yè)資訊,技術(shù)分享,實(shí)戰(zhàn)練習(xí)

? 瘋狂的Python:快速入門精講

? 零基礎(chǔ)入門學(xué)習(xí)Python

? 玩轉(zhuǎn)Python語言

? Python語言程序設(shè)計(jì)

? 程序設(shè)計(jì)入門

? 可汗學(xué)院公開課:計(jì)算機(jī)科學(xué)

? python 入門到精通

? Python交互式編程入門的課程主頁

? Python交互編程入門(第2部分)的課程主頁

2.python web方向
Python Django 快速Web應(yīng)用開發(fā)入門

3.python爬蟲
Python實(shí)戰(zhàn):一周學(xué)會爬取網(wǎng)頁

4.python數(shù)據(jù)分析方向
數(shù)據(jù)分析實(shí)戰(zhàn)基礎(chǔ)課程

(三)Python爬蟲需要哪些知識?

要學(xué)會使用Python爬取網(wǎng)頁信息無外乎以下幾點(diǎn)內(nèi)容:
1、要會Python
2、知道網(wǎng)頁信息如何呈現(xiàn)
3、了解網(wǎng)頁信息如何產(chǎn)生
4、學(xué)會如何提取網(wǎng)頁信息

第一步Python是工具,所以你必須熟練掌握它,要掌握到什么程度呢?如果你只想寫一寫簡單的爬蟲,不要炫技不考慮爬蟲效率,你只需要掌握:

? 數(shù)據(jù)類型和變量

? 字符串和編碼

? 使用list和tuple

? 條件判斷、循環(huán)

? 使用dict和set

你甚至不需要掌握函數(shù)、異步、多線程、多進(jìn)程,當(dāng)然如果想要提高自己小爬蟲的爬蟲效率,提高數(shù)據(jù)的精確性,那么記住最好的方式是去系統(tǒng)的學(xué)習(xí)一遍Python,去哪兒學(xué)習(xí)?Python教程

假設(shè)已經(jīng)熟悉了最基礎(chǔ)的Python知識,那么進(jìn)入第二步:知道網(wǎng)頁信息如何呈現(xiàn)?你首先要知道所需要抓取的數(shù)據(jù)是怎樣的呈現(xiàn)的,就像是你要學(xué)做一幅畫,在開始之前你要知道這幅畫是用什么畫出來的,鉛筆還是水彩筆...可能種類是多樣的,但是放到網(wǎng)頁信息來說這兒只有兩種呈現(xiàn)方式:

1、HTML (HTML 簡介)
2、JSON (JSON 簡介)
HTML是用來描述網(wǎng)頁的一種語言
JSON是一種輕量級的數(shù)據(jù)交換格式

假設(shè)你現(xiàn)在知道了數(shù)據(jù)是由HTML和JSON呈現(xiàn)出來的,那么我們緊接著第三步:數(shù)據(jù)怎么來?數(shù)據(jù)當(dāng)然是從服務(wù)器反饋給你的,為什么要反饋給你?因?yàn)槟惆l(fā)出了請求。

“Hi~ ,服務(wù)器我要這個資源”
“正在傳輸中...”
“已經(jīng)收到HTML或者JSON格式的數(shù)據(jù)”

這個請求是什么請求?要搞清楚這一點(diǎn)你需要了解一下http的基礎(chǔ)知識,更加精確來說你需要去了解GET和POST是什么,區(qū)別是什么。

很高興你使用的是Python,那么你只需要去掌握好快速上手 - Requests 2.10.0 文檔,requests可以幫你模擬發(fā)出GET和POST請求,這真是太棒了。

飯菜已經(jīng)備好,兩菜一湯美味佳肴,下面就是好好享受了?,F(xiàn)在我們已經(jīng)拿到了數(shù)據(jù),我們需要在這些錯亂的數(shù)據(jù)中提取我們需要的數(shù)據(jù),這時候我們有兩個選擇。

第一招:萬能鑰匙

Python正則表達(dá)式指南 ,再大再亂的內(nèi)容,哪怕是大海撈針,只要告訴我這個針的樣子我都能從茫茫大海中撈出來,強(qiáng)大的正則表達(dá)式是你提取數(shù)據(jù)的不二之選。

第二招:笑里藏刀

Beautiful Soup 4.2.0 文檔,或許我們有更好的選擇,我們把原始數(shù)據(jù)和我們想要的數(shù)據(jù)的樣子扔個這個Beautifulsoup,然后讓它幫我們?nèi)ふ?,這也是一個不錯的方案,但是論靈活性,第二招還是略遜于第一招。

第三招:雙劍合璧

最厲害的招式莫過于結(jié)合第一招和第二招了,打破天下無敵手。

基礎(chǔ)知識我都會,可是我還是寫不了一個爬蟲?。?br>客觀別急,這還沒完。

以下這些項(xiàng)目,你拿來學(xué)習(xí)學(xué)習(xí)練練手。

一些教學(xué)項(xiàng)目你值得擁有:

? 03. 豆瓣電影TOP250

? 04. 另一種抓取方式

(四)Python爬蟲進(jìn)階

爬蟲無非分為這幾塊:分析目標(biāo)、下載頁面、解析頁面、存儲內(nèi)容,其中下載頁面不提。

分析目標(biāo)

所謂分析就是首先你要知道你需要抓取的數(shù)據(jù)來自哪里?怎么來?普通的網(wǎng)站一個簡單的POST或者GET請求,不加密不反爬,幾行代碼就能模擬出來,這是最基本的,進(jìn)階就是學(xué)會分析一些復(fù)雜的目標(biāo),比如說:淘寶、新浪微博登陸以及網(wǎng)易云的評論信息等等。

解析頁面

解析頁面主要是選擇什么庫或者那些庫結(jié)合能使解析速度更快,可能你一開始你通過種種地方了解到了bs庫,于是你對這個庫很癡迷,以后只要寫爬蟲,總是先寫上:

import requests

from bs4 import BeautifulSoup

當(dāng)然bs已經(jīng)很優(yōu)秀了,但是并不代表可以用正則表達(dá)式解析的頁面還需要使用bs,也不代表使用lxml能解決的還要動用bs,所以這些解析庫的速度是你在進(jìn)階時要考慮的問題。

存儲內(nèi)容

剛開始學(xué)爬蟲,一般爬取的結(jié)果只是打印出來,最后把在終端輸出的結(jié)果復(fù)制粘貼保存就好了;后來發(fā)現(xiàn)麻煩會用上xlwt/openpyxl/csv的把存儲內(nèi)容寫入表格,再后來使用數(shù)據(jù)庫sqlite/mysql/neo4j只要調(diào)用了庫都很簡單,當(dāng)然這是入門。

進(jìn)階要開始學(xué)習(xí)如何選擇合適的數(shù)據(jù)庫,或者存儲方式。當(dāng)爬取的內(nèi)容過千萬的時候,如何設(shè)計(jì)使存儲速度更快,比如說當(dāng)既有人物關(guān)系又有人物關(guān)系的時候,一定會用neo4j來存儲關(guān)系,myslq用來存儲用戶信息,這樣分開是因?yàn)槿绻畔⑷看嫒雗eo4j,后期的存儲速度經(jīng)十分的慢。

當(dāng)你每個步驟都能做到很優(yōu)秀的時候,你應(yīng)該考慮如何組合這四個步驟,使你的爬蟲達(dá)到效率最高,也就是所謂的爬蟲策略問題,爬蟲策略學(xué)習(xí)不是一朝一夕的事情,建議多看看一些比較優(yōu)秀的爬蟲的設(shè)計(jì)方案,比如說Scrapy。

除了爬取策略以外,還有幾點(diǎn)也是必備的:

代理策略以及多用戶策略

代理是爬蟲進(jìn)階階段必備的技能,與入門階段直接套用代理不同,在進(jìn)階階段你需要考慮如何設(shè)計(jì)使用代理策略,什么時候換代理,代理的作用范圍等等,多用戶的抓取策略考慮的問題基本上與代理策略相同。

增量式抓取以及數(shù)據(jù)刷新

比如說你抓取的是一個酒店網(wǎng)站關(guān)于酒店價格數(shù)據(jù)信息的,那么會有這些問題:酒店的房型的價格是每天變動的,酒店網(wǎng)站每天會新增一批酒店,那么如何進(jìn)行存儲、如何進(jìn)行數(shù)據(jù)刷新都是應(yīng)該考慮的問題。

3.驗(yàn)證碼相關(guān)的一些問題

有很多人提到驗(yàn)證碼,我個人認(rèn)為驗(yàn)證碼不是爬蟲主要去解決的問題,驗(yàn)證碼不多的情況考慮下載到本地自己輸入驗(yàn)證碼,在多的情況下考慮接入打碼平臺。

(五)Python爬蟲面試指南

前段時間快要畢業(yè),而我又不想找自己的老本行Java開發(fā)了,所以面了很多Python爬蟲崗位。因?yàn)槲以谀暇┥蠈W(xué),所以我一開始只是在南京投了簡歷,我一共面試了十幾家企業(yè),其中只有一家沒有給我發(fā)offer,其他企業(yè)都愿意給到10K的薪資,不要拿南京的薪資水平和北上深的薪資水平比較,結(jié)合面試常問的問題類型說一說我的心得體會。

第一點(diǎn):Python

因?yàn)槊嬖嚨氖荘ython爬蟲崗位,面試官大多數(shù)會考察面試者的基礎(chǔ)的Python知識,包括但不限于:

? Python2.x與Python3.x的區(qū)別

? Python的裝飾器

? Python的異步

? Python的一些常用內(nèi)置庫,比如多線程之類的

第二點(diǎn):數(shù)據(jù)結(jié)構(gòu)與算法

數(shù)據(jù)結(jié)構(gòu)與算法是對面試者尤其是校招生面試的一個很重要的點(diǎn),當(dāng)然小公司不會太在意這些,從目前的招聘情況來看對面試者的數(shù)據(jù)結(jié)構(gòu)與算法的重視程度與企業(yè)的好壞成正比,那些從不問你數(shù)據(jù)結(jié)構(gòu)的你就要當(dāng)心他們是否把你當(dāng)碼農(nóng)用的,當(dāng)然以上情況不絕對,最終解釋權(quán)歸面試官所有。

第三點(diǎn):Python爬蟲

最重要也是最關(guān)鍵的一點(diǎn)當(dāng)然是你的Python爬蟲相關(guān)的知識與經(jīng)驗(yàn)儲備,這通常也是面試官考察的重點(diǎn),包括但不限于:

? 你遇到過的反爬蟲的策略有哪些?

? 你常用的反反爬蟲的方案有哪些?

? 你用過多線程和異步嗎?除此之外你還用過什么方法來提高爬蟲效率?

? 有沒有做過增量式抓???

? 對Python爬蟲框架是否有了解?

第四點(diǎn):爬蟲相關(guān)的項(xiàng)目經(jīng)驗(yàn)

爬蟲重在實(shí)踐,除了理論知識之外,面試官也會十分注重爬蟲相關(guān)的項(xiàng)目:

? 你做過哪些爬蟲項(xiàng)目?如果有Github最好

? 你認(rèn)為你做的最好的爬蟲項(xiàng)目是哪個?其中解決了什么難題?有什么特別之處?

以上是我在面試過程中,會碰到的一些技術(shù)相關(guān)的問題的總結(jié),當(dāng)然面試中不光是技術(shù)這一點(diǎn),但是對于做技術(shù)的,過了技術(shù)面基本上就是薪資問題了。

(六)推薦一些不錯的Python博客

如果是Python基礎(chǔ)的話,廖雪峰的博客教程會是一個不錯的選擇:

? Python3教程

? Python 2.7教程

當(dāng)然很多剛接觸Python的同學(xué)反應(yīng)廖大大的教程中部分跳躍性太大,如果覺得跳躍性太大可以結(jié)合菜鳥教程一起看:

? Python3 教程 | 菜鳥教程

? Python 基礎(chǔ)教程 | 菜鳥教程

(七)Python如何進(jìn)階

很多人在學(xué)習(xí)編程之初都會碰到這種問題:學(xué)會了基礎(chǔ)的語法了,但是還是做不了項(xiàng)目,不知道如何下手。

當(dāng)初,我學(xué)習(xí)C的時候是這樣、Java的時候是這樣、Python的時候也是這樣,其實(shí)不管什么語言、什么知識都是這樣:理論基礎(chǔ)知識 - 能動手做項(xiàng)目是有一道鴻溝的。

那么如何突破這條鴻溝?中間的橋梁是什么?

其實(shí)題主自己已經(jīng)回答出來了:照抄!

所謂照抄前提是有樣本。

首先找到一些簡單易上手的項(xiàng)目,這些項(xiàng)目大多散落在Python實(shí)踐相關(guān)的書籍中、Github上,這些實(shí)戰(zhàn)項(xiàng)目知乎上都有很多推薦。

1.一些比較好的適合初學(xué)者動手的項(xiàng)目:

? Show-Me-the-Code/show-me-the-code

? aosabook/500lines

2.大多數(shù)的Python書里面(除了純理論書)都是有小項(xiàng)目的,而且書的一個優(yōu)點(diǎn)是它會一步一步解釋這樣做的原因。

先照抄這些項(xiàng)目,實(shí)現(xiàn)這些小功能在電腦上能運(yùn)行確認(rèn)無誤之后,回過頭來看代碼:

? 有沒有你不理解的地方,不理解的地方標(biāo)記去搜索引擎或者書中找解釋。

? 學(xué)習(xí)作者設(shè)計(jì)這個項(xiàng)目的思路方法,并運(yùn)用到接下來的項(xiàng)目,如果時間充裕,建議隔天再重新再不看書的情況下重新自己實(shí)現(xiàn)一遍這些小項(xiàng)目。

如果你是跟著實(shí)戰(zhàn)的書敲代碼的,很多時候項(xiàng)目都不會一遍運(yùn)行成功,那么你就要根據(jù)各種報(bào)錯去尋找原因,這也是一個學(xué)習(xí)的過程。

總結(jié)起來從Python入門跳出來的過程分為三步:照抄、照抄之后的理解、重新自己實(shí)現(xiàn)。

(八)Python爬蟲入門

第一:Python爬蟲學(xué)習(xí)系列教程

Python版本:3.6

整體目錄:

一、爬蟲入門

? Python爬蟲入門一之綜述

? Python爬蟲入門二之爬蟲基礎(chǔ)了解

? Python爬蟲入門三之Urllib庫的基本使用

? Python爬蟲入門四之Urllib庫的高級用法

? Python爬蟲入門五之URLError異常處理

? Python爬蟲入門六之Cookie的使用

? Python爬蟲入門七之正則表達(dá)式

二、爬蟲實(shí)戰(zhàn)

? Python爬蟲實(shí)戰(zhàn)一之爬取糗事百科段子

? Python爬蟲實(shí)戰(zhàn)二之爬取百度貼吧帖子

? Python爬蟲實(shí)戰(zhàn)三之實(shí)現(xiàn)山東大學(xué)無線網(wǎng)絡(luò)掉線自動重連

? Python爬蟲實(shí)戰(zhàn)四之抓取淘寶MM照片

? Python爬蟲實(shí)戰(zhàn)五之模擬登錄淘寶并獲取所有訂單

? Python爬蟲實(shí)戰(zhàn)六之抓取愛問知識人問題并保存至數(shù)據(jù)庫

? Python爬蟲實(shí)戰(zhàn)七之計(jì)算大學(xué)本學(xué)期績點(diǎn)

? Python爬蟲實(shí)戰(zhàn)八之利用Selenium抓取淘寶匿名旺旺

三、爬蟲利器

? Python爬蟲利器一之Requests庫的用法

? Python爬蟲利器二之Beautiful Soup的用法

? Python爬蟲利器三之Xpath語法與lxml庫的用法

? Python爬蟲利器四之PhantomJS的用法

? Python爬蟲利器五之Selenium的用法

? Python爬蟲利器六之PyQuery的用法

四、爬蟲進(jìn)階

? Python爬蟲進(jìn)階一之爬蟲框架概述

? Python爬蟲進(jìn)階二之PySpider框架安裝配置

? Python爬蟲進(jìn)階三之爬蟲框架Scrapy安裝配置

? Python爬蟲進(jìn)階四之PySpider的用法

第二(第一的姊妹篇):Python爬蟲入門教程

Python版本:3.6

教程目錄:

? [Python]網(wǎng)絡(luò)爬蟲(一):抓取網(wǎng)頁的含義和URL基本構(gòu)成

? [Python]網(wǎng)絡(luò)爬蟲(二):利用urllib2通過指定的URL抓取網(wǎng)頁內(nèi)容

? [Python]網(wǎng)絡(luò)爬蟲(三):異常的處理和HTTP狀態(tài)碼的分類

? [Python]網(wǎng)絡(luò)爬蟲(四):Opener與Handler的介紹和實(shí)例應(yīng)用

? [Python]網(wǎng)絡(luò)爬蟲(五):urllib2的使用細(xì)節(jié)與抓站技巧

? [Python]網(wǎng)絡(luò)爬蟲(六):一個簡單的百度貼吧的小爬蟲

? [Python]網(wǎng)絡(luò)爬蟲(七):Python中的正則表達(dá)式教程

? [Python]網(wǎng)絡(luò)爬蟲(八):糗事百科的網(wǎng)絡(luò)爬蟲(v0.3)源碼及解析(簡化更新)

? [Python]網(wǎng)絡(luò)爬蟲(九):百度貼吧的網(wǎng)絡(luò)爬蟲(v0.4)源碼及解析

? [Python]網(wǎng)絡(luò)爬蟲(十):一個爬蟲的誕生全過程(以山東大學(xué)績點(diǎn)運(yùn)算為例)

? [Python]網(wǎng)絡(luò)爬蟲(11):亮劍!爬蟲框架小抓抓Scrapy閃亮登場!

? [Python]網(wǎng)絡(luò)爬蟲(12):爬蟲框架Scrapy的第一個爬蟲示例入門教程

希望以上的教程可以幫助到大家。

(九)Python開發(fā)微信公眾號

1、需要調(diào)用微信內(nèi)部功能

需要調(diào)用微信內(nèi)部功能組件的比如:公眾號收發(fā)消息|圖片、頁面分享至朋友圈、用戶授權(quán)提取用戶基本信息、微信小店、微信公眾號菜單等內(nèi)部功能組件,這些功能組件在微信公眾號開發(fā)者文檔里面找到:微信公眾平臺開發(fā)者文檔

對于這些功能組件,開發(fā)者文檔都提供了詳細(xì)的接口文檔,告訴你如何調(diào)用,而你只需要用Python調(diào)用這些接口即可。比如一個很簡單的消息發(fā)送的方法如下:

當(dāng)然在這所有的調(diào)用之前,需要進(jìn)行一些授權(quán)驗(yàn)證,同樣開發(fā)者文檔有一套完整的接入指南:接入指南 - 微信公眾平臺開發(fā)者文檔

很遺憾很多初學(xué)者在一開始看這份文檔的時候并不能看懂,所以這里也推薦一些我以前學(xué)習(xí)摸索的過程中使用到的一些簡單易學(xué)的教程。

你可以先做一個簡單的微信機(jī)器人練練手(零基礎(chǔ)十分容易上手):

? 使用python一步一步搭建微信公眾平臺(一)

? 使用python一步一步搭建微信公眾平臺(二)----搭建一個中英互譯的翻譯工具

? 使用python一步一步搭建微信公眾平臺(三)----添加用戶關(guān)注后的歡迎信息與聽音樂功能

? 使用python一步一步搭建微信公眾平臺(四)----將小黃雞引入微信自動回復(fù)

? 使用python一步一步搭建微信公眾平臺(五)----使用mysql服務(wù)來記錄用戶的反饋

如果你已經(jīng)能按照以上的教程搭建一個完整的微信機(jī)器人了,基本上對于微信收發(fā)消息等等簡單功能已經(jīng)沒有什么障礙了。下面再繼續(xù)學(xué)習(xí)如下教程,開始學(xué)習(xí)如何調(diào)用其他一些相對來說比較復(fù)雜的接口。

? 微信公眾平臺開發(fā)入門教程

? 微信公眾平臺開發(fā)—天氣預(yù)報(bào)

? 微信公眾平臺開發(fā)—小黃雞

? 微信公眾平臺開發(fā)—人臉識別

? 微信公眾平臺開發(fā)—百度地圖

? 微信公眾平臺開發(fā)—笑話

? 微信公眾平臺開發(fā)—在線點(diǎn)歌

? 微信公眾平臺開發(fā)—附近查詢

? 微信公眾平臺開發(fā)—快遞物流

? 微信公眾平臺開發(fā)—一鍵關(guān)注

當(dāng)你實(shí)驗(yàn)了如上的教程之后,相信官方文檔的所有接口調(diào)用對你來說已經(jīng)小菜一碟了。

2、不需要調(diào)用微信內(nèi)部功能

不需要調(diào)用微信內(nèi)部功能組件的,就如同正常的web頁面一樣,比如填寫表單進(jìn)行進(jìn)行注冊、點(diǎn)擊按鈕進(jìn)行跳轉(zhuǎn)等等,這些都是正常的web請求,按照正常的web開發(fā)方法走即可。

(十)Python面試概念和代碼

(一)、這兩個參數(shù)是什么意思:args,*kwargs?我們?yōu)槭裁匆褂盟鼈儯?/p>

答:如果我們不確定往一個函數(shù)中傳入多少參數(shù),或者我們希望以元組(tuple)或者列表(list)的形式傳參數(shù)的時候,我們可以使用args(單星號)。如果我們不知道往函數(shù)中傳遞多少個關(guān)鍵詞參數(shù)或者想傳入字典的值作為關(guān)鍵詞參數(shù)的時候我們可以使用*kwargs(雙星號),args、kwargs兩個標(biāo)識符是約定俗成的用法。

另一種答法:當(dāng)函數(shù)的參數(shù)前面有一個星號號的時候表示這是一個可變的位置參數(shù),兩個星號表示這個是一個可變的關(guān)鍵詞參數(shù)。星號把序列或者集合解包(unpack)成位置參數(shù),兩個星號把字典解包成關(guān)鍵詞參數(shù)。

(二)、談一談Python的裝飾器(decorator)

裝飾器本質(zhì)上是一個Python函數(shù),它可以讓其它函數(shù)在不作任何變動的情況下增加額外功能,裝飾器的返回值也是一個函數(shù)對象。它經(jīng)常用于有切面需求的場景。比如:插入日志、性能測試、事務(wù)處理、緩存、權(quán)限校驗(yàn)等。有了裝飾器我們就可以抽離出大量的與函數(shù)功能無關(guān)的雷同代碼進(jìn)行重用。

有關(guān)于具體的裝飾器的用法看這里:裝飾器 - 廖雪峰的官方網(wǎng)站

(三)、簡要描述Python的垃圾回收機(jī)制(garbage collection)

Python中的垃圾回收是以引用計(jì)數(shù)為主,標(biāo)記-清除和分代收集為輔。

引用計(jì)數(shù):Python在內(nèi)存中存儲每個對象的引用計(jì)數(shù),如果計(jì)數(shù)變成0,該對象就會消失,分配給該對象的內(nèi)存就會釋放出來。

標(biāo)記-清除:一些容器對象,比如list、dict、tuple,instance等可能會出現(xiàn)引用循環(huán),對于這些循環(huán),垃圾回收器會定時回收這些循環(huán)(對象之間通過引用(指針)連在一起,構(gòu)成一個有向圖,對象構(gòu)成這個有向圖的節(jié)點(diǎn),而引用關(guān)系構(gòu)成這個有向圖的邊)。

分代收集:Python把內(nèi)存根據(jù)對象存活時間劃分為三代,對象創(chuàng)建之后,垃圾回收器會分配它們所屬的代。每個對象都會被分配一個代,而被分配更年輕的代是被優(yōu)先處理的,因此越晚創(chuàng)建的對象越容易被回收。

如果你想要深入了解Python的GC機(jī)制,點(diǎn)擊這里:[轉(zhuǎn)載]Python垃圾回收機(jī)制--完美講解!

(四)、Python多線程(multi-threading)。這是個好主意嗎?

Python并不支持真正意義上的多線程,Python提供了多線程包。Python中有一個叫Global Interpreter Lock(GIL)的東西,它能確保你的代碼中永遠(yuǎn)只有一個線程在執(zhí)行。經(jīng)過GIL的處理,會增加執(zhí)行的開銷。這就意味著如果你先要提高代碼執(zhí)行效率,使用threading不是一個明智的選擇,當(dāng)然如果你的代碼是IO密集型,多線程可以明顯提高效率,相反如果你的代碼是CPU密集型的這種情況下多線程大部分是雞肋。

(五)、 說明os,sys模塊不同,并列舉常用的模塊方法?

官方文檔:

os模板提供了一種方便的使用操作系統(tǒng)函數(shù)的方法

sys模板可供訪問由解釋器使用或維護(hù)的變量和與解釋器交互的函數(shù)

另一種回答:

os模塊負(fù)責(zé)程序與操作系統(tǒng)的交互,提供了訪問操作系統(tǒng)底層的接口。sys模塊負(fù)責(zé)程序與Python解釋器的交互,提供了一系列的函數(shù)和變量用戶操作Python運(yùn)行時的環(huán)境。

(六)、什么是lambda表達(dá)式?它有什么好處?

簡單來說,lambda表達(dá)式通常是當(dāng)你需要使用一個函數(shù),但是又不想費(fèi)腦袋去命名一個函數(shù)的時候使用,也就是通常所說的匿名函數(shù)。

lambda表達(dá)式一般的形式是:關(guān)鍵詞lambda后面緊接一個或多個參數(shù),緊接一個冒號“:”,緊接一個表達(dá)式。lambda表達(dá)式是一個表達(dá)式不是一個語句。

(七)、Python中pass語句的作用是什么?

pass語句不會執(zhí)行任何操作,一般作為占位符或者創(chuàng)建占位程序

(八)、Python是如何進(jìn)行類型轉(zhuǎn)換的?

Python提供了將變量或值從一種類型轉(zhuǎn)換為另一種類型的內(nèi)置方法。

(九)、Python里面如何拷貝一個對象?

Python中對象之間的賦值是按引用傳遞的,如果要拷貝對象需要使用標(biāo)準(zhǔn)模板中的copy

copy.copy:淺拷貝,只拷貝父對象,不拷貝父對象的子對象。

copy.deepcopy:深拷貝,拷貝父對象和子對象。

(十)、__new__和__init__的區(qū)別。

__init__為初始化方法,__new__方法是真正的構(gòu)造函數(shù)。

__new__是實(shí)例創(chuàng)建之前被調(diào)用,它的任務(wù)是創(chuàng)建并返回該實(shí)例,是靜態(tài)方法

__init__是實(shí)例創(chuàng)建之后被調(diào)用的,然后設(shè)置對象屬性的一些初始值。

總結(jié):__new__方法在__init__方法之前被調(diào)用,并且__new__方法的返回值將傳遞給__init__方法作為第一個參數(shù),最后__init__給這個實(shí)例設(shè)置一些參數(shù)。

(十一)、Python中單下劃線和雙下劃線分別是什么?

__name__:一種約定,Python內(nèi)部的名字,用來與用戶自定義的名字區(qū)分開,防止沖突

_name:一種約定,用來指定變量私有

__name:解釋器用_classname__name來代替這個名字用以區(qū)別和其他類相同的命名

想要更加詳細(xì)的了解這兩者的區(qū)別,請點(diǎn)擊:Python中的下劃線(譯文)

(十二)、說一說Python自省。

自省就是面向?qū)ο蟮恼Z言所寫的程序在運(yùn)行時,所能知道對象的類型。簡單一句話就是運(yùn)行時能夠獲得對象的類型。比如:type()、dir()、getattr()、hasattr()、isinstance()

有關(guān)于元類以及單例模式會在后面文章中做詳細(xì)的解釋說明。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/43858.html

相關(guān)文章

  • 精通Python網(wǎng)絡(luò)爬蟲(0):網(wǎng)絡(luò)爬蟲學(xué)習(xí)路線

    摘要:以上是如果你想精通網(wǎng)絡(luò)爬蟲的學(xué)習(xí)研究路線,按照這些步驟學(xué)習(xí)下去,可以讓你的爬蟲技術(shù)得到非常大的提升。 作者:韋瑋 轉(zhuǎn)載請注明出處 隨著大數(shù)據(jù)時代的到來,人們對數(shù)據(jù)資源的需求越來越多,而爬蟲是一種很好的自動采集數(shù)據(jù)的手段。 那么,如何才能精通Python網(wǎng)絡(luò)爬蟲呢?學(xué)習(xí)Python網(wǎng)絡(luò)爬蟲的路線應(yīng)該如何進(jìn)行呢?在此為大家具體進(jìn)行介紹。 1、選擇一款合適的編程語言 事實(shí)上,Python、P...

    spacewander 評論0 收藏0
  • Python所有方向的學(xué)習(xí)路線,你們要的知識體系在這,千萬別做了無用功!

    摘要:適用人群爬蟲方向數(shù)據(jù)分析方向非程序員加薪四開發(fā)前后端開發(fā)是程序員職業(yè)中的熱門,目前來講,人才缺口依然很大。寄語上面就是所有方向的學(xué)習(xí)路線了,把你感興趣的方向掌握了之后,你去找工作不是什么問題的。 ...

    opengps 評論0 收藏0
  • 史上最詳細(xì)Python學(xué)習(xí)路線-從入門到精通,只需90天

    摘要:針對的初學(xué)者,從無到有的語言如何入門,主要包括了的簡介,如何下載,如何安裝,如何使用終端,等各種開發(fā)環(huán)境進(jìn)行開發(fā),中的語法和基本知識概念和邏輯,以及繼續(xù)深入學(xué)習(xí)的方法。 ...

    gghyoo 評論0 收藏0
  • 【微信小程序爬蟲】表情包小程序圖文視頻教學(xué),從零寫起,保姆教程?。?!

    摘要:文章目錄前言爬取分析視頻教學(xué)成果展示福利入門到就業(yè)學(xué)習(xí)路線規(guī)劃小白快速入門爬蟲路線前言皮皮蝦一個沙雕而又有趣的憨憨少年,和大多數(shù)小伙伴們一樣喜歡聽歌游戲,當(dāng)然除此之外還有寫作的興趣,,日子還很長,讓我們一起加油努力叭話 ...

    coordinate35 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<