Python教學心得
Python教學心得1
1、定義方法
關鍵字def是方法定義的標志。接下來緊跟方法名和被圓括號所包圍的參數列表。方法的主
體語句將在下一行開始并且必須縮進。
方法主體的首句可選擇性地是一句字符,用來說明方法的主要功能
例如:
“”“print a finabo series up to n.”“”
2、默認參數值
默認值僅被設置一次,這與以前默認值為可變對象(如列表、字典和多數類實
例時)有很大的區別。
例如:
i=5
def f(arg=i):
print(arg)
i=6
f
將會輸出5
3、關鍵字參數
可以通過形式關鍵字參數調用方法
在方法調用中,關鍵字參數必須遵循位置參數。所有的關鍵參數必須符合方法接受的參數
其中之一。但是他們的次序不重要,這包含非選擇的參數。沒有參數可以多次接受一個值。
當最后一個形參是__name時,它可以接受包含除了形式參數之外的所有關鍵字的字典,
_name必須在__name之前出現
4、可變參數列表
正常來說,這些可變參數常常放在正式參數列表的后面,因為它們會包攬所有傳遞給該方法
的剩余輸入參數。任何出現在_args參數后低的正式參數會被認為是關鍵字參數,意味著它
們只能當關鍵字使用而不是位置參數。
>>>def concat(_args,sep=“/”):
...returnsep.join(args)
...
>>>concat(“earth”,“mars”,“venus”)
’earth/mars/venus’
>>>concat(“earth”,“mars”,“venus”, sep=“.”)
’earth.mars.venus’
5、拆分參數列表
當參數已經存在列表或者元組中,但是需要分拆以供要求分離位置參數調用的方法,如果單獨
分開它們無法使用,就需要寫一個方法用_操作符來調用實現分拆列表或者元組中的參數。
同樣的使用形式,字典可以用__操作符實現關鍵字參數。
6、形式
lamdba a,b:a+b該函數表示兩個數的和,像內嵌函數
7、代碼風格
對于python,PEP8作為許多項目應該遵守的編碼指導書而做的。它提出了一種可讀而悅
目的編碼風格。每位python開發者應該讀它。這里抽出一個重要的事項與你分享:
用四個空格代替tab鍵
每行不要超過79個字符。
用空行分離方法和類,大塊代碼中的方法。
必要的時候為每行添加注釋。
用文檔字符串
在操作符兩邊用空格
用統一的風格命名自定義的方法和類
如果你的代碼打算用在國際環境中,請不要用想象的字符編碼。Python默認的是
utf-8,在任何情況下可以用Ascii .
同樣的,即使有很少機會讓說不同語言的人們讀代碼或者維護代碼,但在定義中不
要用非ASCII編碼字符。
Python教學心得2
由于我是自學Python,非科班出生,所以只能分享一些關于我的學習心得,如果有不對地方歡迎指正。
不過非科班出生雖然是一個痛點,但是在工作上,我其實不輸給我其他同事,這點我倒是很有自信,而且我也統一一句話“目前互聯網上的免費編程課程,足夠讓你成為一個合格的碼農”。
編程入門
我剛開始學習編程,主要是因為自己想動手做個網站,但是由于技術原因,再加上朋友都比較忙,最后抱著“求人不如求己”的想法,干脆自學。
編程難不難?
這個問題我覺得所有認真學過的人,都一定會肯定告訴你編程不難,但是精通那是相當困難的。
如果你還沒去學習,就覺得編程一定很難,那么其實你是沒有資格說這句話的,任何事情一定是要去嘗試后,才能這么說。
編程其實很像堆積木,然后根據需求,把東西造出來,可以是房子,也可以是橋梁。
學習編程無非運用這些積木,來創造你要的東西。
編程語言選擇
這邊說個題外話,關于當時編程語言的選擇,很多時候我覺得不是你選擇編程語言,而是編程語言選擇你,也就是你的“本命編程語言”。
人的性格會影響你適合的編程語言,比如你做事有條理,喜歡定期清理房間,那么可能C語言很適合你;如果你不喜歡打掃房間,實在受不了,才打掃一次,可能你適合Java。
哈哈,開個玩笑,不過確實有這種很玄的存在。
我當時在編程語言的選擇上,用了一個笨方法。
我跑到w3cschool上面,把所有編程語言的第一章都去試了一遍,看看自己喜歡哪個語言,然后就選哪個語言,如果你不知道選哪門語言,可以用我的方法試試看。
至于編程語言,沒有高低之分,因為無論你學習哪門語言,你都非常有市場,而且你都能夠拿到高薪,關鍵是哪門語言適合你,并且能夠讓你有興趣學下去,能學好,這個很關鍵。
興趣是學習編程最大的驅動力!
為什么是Python
說下為什么選擇Python?
因為簡單,Python是公認的最容易入門的編程語言,而且也是公認有發展前景的編程語言,適用于機器人、大數據、人工智商等未來高科技。
基于以上的原因,我選擇Python來作為自己的入門語言,而且我覺得我適合Python這么語言。(因為我很懶)
之前有個梗,大概就是其他編程語言在討論某個問題,怎么解決,而Python的程序員已經下班了,由此可見Python的效率。
總結:Python的語言特點就是“一氣呵成,痛快如拉稀”。
學習心得
由于我是自學的,所以參考的網站比較多,小伙伴可以按照我的學習路線,一般來說不會出現什么問題。
基礎:教程+視頻
進階:視頻+實踐
進階pro:視頻+實踐+書籍+交流
基礎
剛開始學習的時候,我比較推薦w3cschool和菜鳥教程這兩個網站。
w3cschool-學編程,從w3cschool開始www.w3cschool.cn!
菜鳥教程-學的不僅是技術,更是夢想!www.runoob.com
這兩個網站在我看來,是編程自學的福音。
w3cschool這個網站手冊非常棒,另外這個網站的編程微課以及編程實戰對新手來說非常友好!
我當時就是靠這兩個,引發我學習的樂趣,不然對著枯燥的代碼,說實話,很無聊的。
菜鳥教程,這個網站的實例是最棒的,很多時候,你不僅僅要自己看教程,還要去看看為什么,而菜鳥教程的實例就能夠讓你清晰的知道,為什么,并且會原來如此。
總的來說,這兩個網站就像新手村剛出來的劍和盾!是新手入門絕對不能少的,尤其是w3cschool,強烈推薦。
還有一個就是視頻,視頻我是在慕課網上面看的,我很喜歡慕課網這個網站,網站風格很棒,而且視頻也很清晰。
也可以在阿里云上面看Python的視頻,也很不錯,并且是免費的。
進階
進階結束后,代表你是個初級工程師。
這一步實踐非常重要,你要自己動手,做一些小玩意,實踐才是最重要的,在實踐中發現問題,那是學習最快并且效率最高的時刻。
你可以先給自己定下一個目標,比如我要做一個簡單的頁面,或者我要做一個簡單的小程序。
然后就開始動手去實踐,這步很重要。
同時還是要多看書籍。
進階pro
到這一步,我建議務必買書,你需要書籍幫你反向梳理你的知識,這決定了你以后的高度,而不是這個也懂,那個也懂,但是東西就是做不出來。
我記得當時我買完書,看完后的第一感受就是:原來這個世界是這樣的!
書會非常系統性的幫你梳理你自己學過的知識!
這里只推薦兩本書:《Python入門手冊》和《Python核心編程》
小伙伴可以自己去亞馬遜購買。
然后就是和身邊的小伙伴交流!
多看看別人的代碼,自己多敲敲代碼,是必經之路,也是一定要做的。
以上,希望對想入門Python的小伙伴能夠提供一點點幫助。
Python教學心得3
最近這段時間我們學習了很多內容,增長了很多關于Python的知識,萬事萬物是相通的,正如學習新的知識就像吃飯一樣。
吃多了就會消化不良,反映到學習上也是一樣,不知各位最近的感覺怎樣,反正學記是需要一些時間好好消化,掌握到手中,為下一步的知識補齊缺口。
接下來,學記和大家一起回顧一下最近學習的內容,循序漸進,循序漸進。
分支結構
分支結構就像上圖一樣,是用來選擇道路的。
所用的關鍵字是
If elif else
這三個詞的意思分別是
如果否則如果其他的
分支語句的寫法需要將與關鍵字與關鍵字對齊
循環結構
循環結構應用于一些重復的進程
通常我們只接觸兩種循環
for-in循環和while循環
for-in循環適用于
確切的知道到底循環幾次
while循環適用于
不知道到底有幾次循環
此時要搭配bool來進行
即True和Flase
關鍵字
關鍵字的熟練運用對于今后的開發工作
有非常重要的作用,但這么多關鍵字我們不能***記硬背
只有在一個一個代碼的驗證當中去熟悉去掌握
那樣是最可靠的
def設置模組
len計算字符串長度
capitalize獲得字符串首字母大寫的拷貝
upper獲得字符串變大寫后的拷貝
find從字符串中查找子串所在位置
index與find類似但找不到子串時會引發異常
startswith檢查字符串是否以指定的字符串開頭
endswith檢查字符串是否以指定的字符串結尾
center將字符串以指定的寬度居中并在兩側填充指定的字符
rjust將字符串以指定的寬度靠右放置左側填充指定的字符
isdigit檢查字符串是否由數字構成
isalpha檢查字符串是否以字母構成
isalnum檢查字符串是否以數字和字母構成
append添加元素
remove刪除元素
clear清空元素
sorted排序
大家可能會有些疑惑,學習這些東西真的有用嗎?這些隨處可見的基礎方面的知識真的有用嗎?
我可以非常肯定地告訴大家
有用的!
這些知識就像是建筑工地隨處可見的磚石,不管這些磚石怎樣的不起眼,但是沒有一幢建筑可以離開磚石,學習的過程是枯燥的,不過這也正符合非常現實的一條規律。
學如逆水行舟,不進則退!
也正是因為它枯燥苦悶,學習有難度,才保證了,我們學習了這些知識以后,可以靠它們為生,在這個知識時代闖出自己的一片天!
不要放棄,絕對不要放棄!
黎明之前是最黑暗的!
為了自己的未來好好堅守吧!
青年學記陪伴著各位青年
Python教學心得4
011月,一群編程零基礎的小伙伴們成立了Python學習小組,12名學員從此夜以繼日地奔赴學習的征程。一個月過去了,從在屏幕上用最簡單的語句打印出“Hello,Python; Hello,World”開始,我們逐步地學習Python語法,學習操作列表、字典,學習For,While,If語句,現在遇到了第一個難點:類。通過研讀、練習、交流、討論,作為程序界的小白,我們逐步地理解了類的概念,明白了面向對象與面向過程編程的差異,以下是我們的'小小心得,與大家分享:
編程基本思想
現實世界中,每個復雜的事務都可以拆分為多個組成部分,其中的每一部分就可稱之為對象。比如要實現一個很大很復雜的項目,我們可以把項目拆分成不同的組成部分,然后分別對不同部分通過編程實現,最終再把各個部分組裝起來完成整個項目。這讓我們能夠從整體上來控制項目,從而讓程序開發更有效。
比如汽車制造,汽車廠所做的僅僅是各個部件的組裝和匹配,而各個部件的生產是由相對專業的廠商完成。如果需要研發新型號汽車,整車廠所考慮的是如何對各個新式的零部件進行新的組裝和匹配,而不是從頭到尾重新生產一輛汽車。
面向對象的編程
VS
面向過程的編程
面向過程編程是針對一個需求的具體實現過程,但是對于大型項目的復雜需求,一步一步的做,這種編程效率顯然是低下的。
面向對象編程則是對項目進行拆分后(一般按照功能拆分),分別實現,再將各個對象組裝起來。因此簡單的小程序使用面向過程方法編程更適合。面向對象的編程特性是易維護(可讀性高),效率高,質量高(重用性),擴展性好(高內聚,低耦合)。
對象
通俗的講,對象就是事物,一個公司、一個部門、一個人,甚至一本書都可以是一個對象,程序員可以自由決定把什么作為對象。
比如eHR系統,需要對組織架構,員工進行管理,所以使用的對象可能是公司,部門,崗位,員工,等等。對象可大可小,可復雜也可簡單,如果僅僅是做一個考勤系統,員工這個對象一定要比eHR系統中的員工對象簡單。
類
現實世界中,類代表一組有共同特性的事物,把不同對象之間的共性抽象出來,就形成類的概念。比如說男人、女人可以抽象成人這個類;處長、秘書可以抽象成員工類。至于類如何去抽象,粒度的粗細,這是一個需要在學習和實踐中摸索的過程。
實例
以下是一個實例,大家體會一下:
1.定義父類:
class Employee:
def __init__(self, name, age): #抽象員工共性(名字,年齡)
self.name = name
self.age = age
def signON(self):
print(self.name+“ sign on.”) #抽象簽到的動作
def work(self):
print(self.name + “ on work.”) #抽象工作的動作
2.繼承出子類:
class MEmployee(Employee): #繼承父類的共性
def __init__(self, name, age):
super.__init__(name, age)
def work(self): #重寫子類的方法(抽象出從事管理崗位工作的動作)
print(self.name + “ on manager_work.”)
3.繼承出第二個子類:
class TEmployee(Employee):
def __init__(self, name, age, devLanguage): #繼承父類的共性,增加語言的屬性
super().__init__(name, age)
self.devLanguage = devLanguage
def work(self): #重寫子類的方法(抽象出從事技術崗位工作的動作)
print(self.name + “ on technology_work.”)
def showLanguage(self): #增加子類的方法(抽象出會某種編程語言的動作)
print(“use ”+self.devLanguage+“ language.”)
在上面的程序中,我們先定義了一個父類:包含員工的姓名、年齡等一般特性,可以執行簽到、工作這兩類動作。在第一個子類中,管理層在前面一般特性的基礎上,執行管理工作;在第二個子類中,作為一般員工在前面一般特性的基礎上,執行技術工作,從事編程。
Python教學心得5
python是一門非常有潛力的高級語言,歷經多年的發展,其在編程上發揮著越來越大的作用。在這學期中,通過選修python課上的基礎知識學習,我對python也有了一定的認識。而且,在字符串上的處理,python相對于c語言也是給程序員極大的便利。而python不僅如此,它的庫也很多,正因為它強大的庫,讓編程變得不再艱難。但是,我認為python雖然在許多方面相對于c語言比較方便,但也有其相對于弱一點的方面,比如說for循環等方面。雖然一學期下來,我對python的學習也僅僅只是它的基礎方面,但python的強大,也是足足地吸引著我,希望自己能夠在不斷地學習中,將python學習的更加好。
python是一門非常有潛力的高級語言,歷經多年的發展,其在編程上發揮著越來越大的作用。在這學期中,通過選修python課上的基礎知識學習,我對python也有了一定的認識。
在學習python的第一節課上,其對我的最初的印象就是,相較于我學習過的c語言編程,它更加的簡潔。所有的變量都不需要像c語言編程那樣需要提前去定義,這樣給了編程者很大的自由空間與方便。如x=2,即可同時完成變量的定義與賦值。對于簡化程序的代碼,起到了許多的作用。而且,在字符串上的處理,python相對于c語言也是給程序員極大的便利。在c語言中,只能用字符類的數組對字符串進行相應的操作,步驟也是相對于比較繁瑣的,而在python中,當我們需要創建一個字符串的時候,只需要在創建字符串的時候用“s=”就可以了。而python不僅如此,它的庫也很多,正因為它強大的庫,讓編程變得不再艱難。我們只需要調用庫中的函數,而對于函數的具體實現,也沒有特殊的需求。
但是,我認為python雖然在許多方面相對于c語言比較方便,但也有其相對于弱一點的方面,比如說for循環等方面。不過也依然不會影響到python的強大,而隨著近幾年來的發展,python的受歡迎度也越來越高,而它的運用的領域也是越來越多,比如人工智能和大數據等領域,python都是在其中扮演者重要的角色。雖然一學期下來,我對python的學習也僅僅只是它的基礎方面,但python的強大,也是足足地吸引著我,希望自己能夠在不斷地學習中,將python學習的更加好。
Python總結
目錄
Python總結.....................................................................................................................1 前言.............................................................................................................................2
(一)如何學習Python.........................................................................................2
(二)一些Python免費課程推薦.......................................................................4
(三)Python爬蟲需要哪些知識?....................................................................5
(四)Python爬蟲進階.........................................................................................8
(五)Python爬蟲面試指南..............................................................................11
(六)推薦一些不錯的Python博客.................................................................13
(七)Python如何進階.......................................................................................14
(八)Python爬蟲入門.......................................................................................16
(九)Python開發微信公眾號..........................................................................20
(十)Python面試概念和代碼..........................................................................24
(十一)Python書籍...........................................................................................34
前言
知乎:路人甲
微博:玩數據的路人甲 微信公眾號:一個程序員的日常
在知乎分享已經有一年多了,之前一直有朋友說我的回答能整理成書籍了,一直偷懶沒做,最近有空仔細整理了知乎上的回答和文章另外也添加了一些新的內容,完成了幾本小小的電子書,這一本是有關于Python方面的。
還有另外幾本包括我的一些數據分析方面的讀書筆記、增長黑客的讀書筆記、機器學習十大算法等等內容。將會在我的微信公眾號:一個程序員的日常進行更新,同時也可以關注我的知乎賬號:路人甲及時關注我的最新分享用數據講故事。
(一)如何學習Python 學習Python大致可以分為以下幾個階段:
1.剛上手的時候肯定是先過一遍Python最基本的知識,比如說:變量、數據結構、語法等,基礎過的很快,基本上1~2周時間就能過完了,我當時是在這兒看的基礎:Python 簡介 | 菜鳥教程 2.看完基礎后,就是做一些小項目鞏固基礎,比方說:做一個終端計算器,如果實在找不到什么練手項目,可以在 Codecademy知乎專欄
5.Python庫是開發者利器,用這些庫你可以做很多很多東西,最常見的網絡爬蟲、自然語言處理、圖像識別等等,這些領域都有很強大的Python庫做支持,所以當你學了Python庫之后,一定要第一時間進行練習。如何尋找自己需要的Python庫呢?推薦我之前的一個回答:如何找到適合需求的 Python 庫? 6.學習使用了這些Python庫,此時的你應該是對Python十分滿意,也十分激動能遇到這樣的語言,就是這個時候不妨開始學習Python數據結構與算法,Python設計模式,這是你進一步學習的一個重要步驟:faif/python-patterns
7.當度過艱難的第六步,此時選擇你要研究的方向,如果你想做后端開發,不妨研究研究Django,再往后,就是你自己自由發揮了。
(二)一些Python免費課程推薦 以下課程都為免費課程
1.python零基礎相關
適用人群:Python零基礎的初學者、Web開發程序員、運維人員、有志于從事互聯網行業以及各領域應用Python的人群
? 瘋狂的Python:快速入門精講 ? 零基礎入門學習Python ? 玩轉Python語言 ? Python語言程序設計 ? 程序設計入門
? 可汗學院公開課:計算機科學 ? python 入門到精通 ? Python交互式編程入門的課程主頁
? Python交互編程入門(第2部分)的課程主頁
2.python web方向
Python Django 快速Web應用開發入門
3.python爬蟲
Python實戰:一周學會爬取網頁
4.python數據分析方向 數據分析實戰基礎課程
(三)Python爬蟲需要哪些知識?
要學會使用Python爬取網頁信息無外乎以下幾點內容:
1、要會Python
2、知道網頁信息如何呈現
3、了解網頁信息如何產生
4、學會如何提取網頁信息
第一步Python是工具,所以你必須熟練掌握它,要掌握到什么程度呢?如果你只想寫一寫簡單的爬蟲,不要炫技不考慮爬蟲效率,你只需要掌握: ? ? ? ? ? 數據類型和變量 字符串和編碼 使用list和tuple 條件判斷、循環 使用dict和set
你甚至不需要掌握函數、異步、多線程、多進程,當然如果想要提高自己小爬蟲的爬蟲效率,提高數據的精確性,那么記住最好的方式是去系統的學習一遍Python,去哪兒學習?Python教程
假設已經熟悉了最基礎的Python知識,那么進入第二步:知道網頁信息如何呈現?你首先要知道所需要抓取的數據是怎樣的呈現的,就像是你要學做一幅畫,在開始之前你要知道這幅畫是用什么畫出來的,鉛筆還是水彩筆...可能種類是多樣的,但是放到網頁信息來說這兒只有兩種呈現方式:
1、HTML(HTML 簡介)
2、JSON(JSON 簡介)HTML是用來描述網頁的一種語言 JSON是一種輕量級的數據交換格式
假設你現在知道了數據是由HTML和JSON呈現出來的,那么我們緊接著第三步:數據怎么來?數據當然是從服務器反饋給你的,為什么要反饋給你?因為你發出了請求。“Hi~,服務器我要這個資源” “正在傳輸中...”
“已經收到HTML或者JSON格式的數據”
這個請求是什么請求?要搞清楚這一點你需要了解一下http的基礎知識,更加精確來說你需要去了解GET和POST是什么,區別是什么。也許你可以看看這個:淺談HTTP中Get與Post的區別博客園
很高興你使用的是Python,那么你只需要去掌握好快速上手知乎專欄 知乎--Python學習路徑及練手項目合集
(四)Python爬蟲進階
爬蟲無非分為這幾塊:分析目標、下載頁面、解析頁面、存儲內容,其中下載頁面不提。1.分析目標
所謂分析就是首先你要知道你需要抓取的數據來自哪里?怎么來?普通的網站一個簡單的POST或者GET請求,不加密不反爬,幾行代碼就能模擬出來,這是最基本的,進階就是學會分析一些復雜的目標,比如說:淘寶、新浪微博登陸以及網易云的評論信息等等。
2.解析頁面
解析頁面主要是選擇什么庫或者那些庫結合能使解析速度更快,可能你一開始你通過種種地方了解到了bs庫,于是你對這個庫很癡迷,以后只要寫爬蟲,總是先寫上: importrequests
frombs4importBeautifulSoup 當然bs已經很優秀了,但是并不代表可以用正則表達式解析的頁面還需要使用bs,也不代表使用lxml能解決的還要動用bs,所以這些解析庫的速度是你在進階時要考慮的問題。
3.存儲內容
剛開始學爬蟲,一般爬取的結果只是打印出來,最后把在終端輸出的結果復制粘貼保存就好了;后來發現麻煩會用上xlwt/openpyxl/csv的把存儲內容寫入表格,再后來使用數據庫sqlite/mysql/neo4j只要調用了庫都很簡單,當然這是入門。
進階要開始學習如何選擇合適的數據庫,或者存儲方式。當爬取的內容過千萬的時候,如何設計使存儲速度更快,比如說當既有人物關系又有人物關系的時候,一定會用neo4j來存儲關系,myslq用來存儲用戶信息,這樣分開是因為如果信息全部存入neo4j,后期的存儲速度經十分的慢。
當你每個步驟都能做到很優秀的時候,你應該考慮如何組合這四個步驟,使你的爬蟲達到效率最高,也就是所謂的爬蟲策略問題,爬蟲策略學習不是一朝一夕的事情,建議多看看一些比較優秀的爬蟲的設計方案,比如說Scrapy。
除了爬取策略以外,還有幾點也是必備的: 1.代理策略以及多用戶策略
代理是爬蟲進階階段必備的技能,與入門階段直接套用代理不同,在進階階段你需要考慮如何設計使用代理策略,什么時候換代理,代理的作用范圍等等,多用戶的抓取策略考慮的問題基本上與代理策略相同。2.增量式抓取以及數據刷新
比如說你抓取的是一個酒店網站關于酒店價格數據信息的,那么會有這些問題:酒店的房型的價格是每天變動的,酒店網站每天會新增一批酒店,那么如何進行存儲、如何進行數據刷新都是應該考慮的問題。3.驗證碼相關的一些問題 有很多人提到驗證碼,我個人認為驗證碼不是爬蟲主要去解決的問題,驗證碼不多的情況考慮下載到本地自己輸入驗證碼,在多的情況下考慮接入打碼平臺。
(五)Python爬蟲面試指南
前段時間快要畢業,而我又不想找自己的老本行Java開發了,所以面了很多Python爬蟲崗位。因為我在南京上學,所以我一開始只是在南京投了簡歷,我一共面試了十幾家企業,其中只有一家沒有給我發offer,其他企業都愿意給到10K的薪資,不要拿南京的薪資水平和北上深的薪資水平比較,結合面試常問的問題類型說一說我的心得體會。
第一點:Python 因為面試的是Python爬蟲崗位,面試官大多數會考察面試者的基礎的Python知識,包括但不限于:
? ? ? ? Python2.x與Python3.x的區別 Python的裝飾器 Python的異步
Python的一些常用內置庫,比如多線程之類的
第二點:數據結構與算法
數據結構與算法是對面試者尤其是校招生面試的一個很重要的點,當然小公司不會太在意這些,從目前的招聘情況來看對面試者的數據結構與算法的重視程度與企業的好壞成正比,那些從不問你數據結構的你就要當心他們是否把你當碼農用的,當然以上情況不絕對,最終解釋權歸面試官所有。
第三點:Python爬蟲
最重要也是最關鍵的一點當然是你的Python爬蟲相關的知識與經驗儲備,這通常也是面試官考察的重點,包括但不限于:
? ? ? ? ? 你遇到過的反爬蟲的策略有哪些? 你常用的反反爬蟲的方案有哪些?
你用過多線程和異步嗎?除此之外你還用過什么方法來提高爬蟲效率? 有沒有做過增量式抓取? 對Python爬蟲框架是否有了解?
第四點:爬蟲相關的項目經驗
爬蟲重在實踐,除了理論知識之外,面試官也會十分注重爬蟲相關的項目:
? 你做過哪些爬蟲項目?如果有Github最好 ? 你認為你做的最好的爬蟲項目是哪個?其中解決了什么難題?有什么特別之處?
以上是我在面試過程中,會碰到的一些技術相關的問題的總結,當然面試中不光是技術這一點,但是對于做技術的,過了技術面基本上就是薪資問題了。
(六)推薦一些不錯的Python博客
如果是Python基礎的話,廖雪峰的博客教程會是一個不錯的選擇:
? ? Python3教程 Python 2.7教程
當然很多剛接觸Python的同學反應廖大大的教程中部分跳躍性太大,如果覺得跳躍性太大可以結合菜鳥教程一起看:
? ? Python3 教程 | 菜鳥教程 Python 基礎教程 | 菜鳥教程
如果你英文稍好的話推薦還是看官方文檔:Python 3.6.0 documentation 如果不是為了學習Python基礎的話,推薦幾個其他的博客。
? ? ? ? 董老師的博客:小明明s à domicile 《Python-Web開發實戰》的作者,知乎某位工程師的博客:分類《Python》,具體是哪位大神我不太清楚。依云大大的博客文章值得深讀:依云's Blog
《從Python開始學編程》的作者博客:PythonVamei博客園
Python | the5fire的技術博客
(七)Python如何進階
很多人在學習編程之初都會碰到這種問題:學會了基礎的語法了,但是還是做不了項目,不知道如何下手。
當初,我學習C的時候是這樣、Java的時候是這樣、Python的時候也是這樣,其實不管什么語言、什么知識都是這樣:理論基礎知識謝科的回答 如果你想學習編程,但是找不到學習路徑和資源,歡迎關注專欄:學習編程
第一:Python爬蟲學習系列教程 Python版本:2.7 整體目錄:
一、爬蟲入門 ? Python爬蟲入門一之綜述 ? Python爬蟲入門二之爬蟲基礎了解 ? Python爬蟲入門三之Urllib庫的基本使用 ? Python爬蟲入門四之Urllib庫的高級用法 ? Python爬蟲入門五之URLError異常處理 ? Python爬蟲入門六之Cookie的使用 ? Python爬蟲入門七之正則表達式
二、爬蟲實戰
? Python爬蟲實戰一之爬取糗事百科段子 ? Python爬蟲實戰二之爬取百度貼吧帖子
? Python爬蟲實戰三之實現山東大學無線網絡掉線自動重連 ? Python爬蟲實戰四之抓取淘寶MM照片
? Python爬蟲實戰五之模擬登錄淘寶并獲取所有訂單 ? Python爬蟲實戰六之抓取愛問知識人問題并保存至數據庫 ? Python爬蟲實戰七之計算大學本學期績點
? Python爬蟲實戰八之利用Selenium抓取淘寶匿名旺旺
三、爬蟲利器
? Python爬蟲利器一之Requests庫的用法 ? Python爬蟲利器二之Beautiful Soup的用法 ? Python爬蟲利器三之Xpath語法與lxml庫的用法 ? Python爬蟲利器四之PhantomJS的用法 ? Python爬蟲利器五之Selenium的用法 ? Python爬蟲利器六之PyQuery的用法
四、爬蟲進階
? Python爬蟲進階一之爬蟲框架概述
? Python爬蟲進階二之PySpider框架安裝配置 ? Python爬蟲進階三之爬蟲框架Scrapy安裝配置 ? Python爬蟲進階四之PySpider的用法
第二(第一的姊妹篇):Python爬蟲入門教程 Python版本:2.7 教程目錄:
? [Python]網絡爬蟲
(一):抓取網頁的含義和URL基本構成
? [Python]網絡爬蟲
(二):利用urllib2通過指定的URL抓取網頁內容 ? [Python]網絡爬蟲
(三):異常的處理和HTTP狀態碼的分類 ? [Python]網絡爬蟲
(四):Opener與Handler的介紹和實例應用 ? [Python]網絡爬蟲
(五):urllib2的使用細節與抓站技巧 ? [Python]網絡爬蟲
(六):一個簡單的百度貼吧的小爬蟲 ? [Python]網絡爬蟲
(七):Python中的正則表達式教程
? [Python]網絡爬蟲
(八):糗事百科的網絡爬蟲(v0.3)源碼及解析(簡化更新)
? [Python]網絡爬蟲
(九):百度貼吧的網絡爬蟲(v0.4)源碼及解析 ? [Python]網絡爬蟲
(十):一個爬蟲的誕生全過程(以山東大學績點運算為例)
? [Python]網絡爬蟲(11):亮劍!爬蟲框架小抓抓Scrapy閃亮登場!? [Python]網絡爬蟲(12):爬蟲框架Scrapy的第一個爬蟲示例入門教程
第三:你已經看完上面(第一或者第二)的教程:再推薦知乎用戶@陳唯源 的實戰練習博客
? Python爬蟲學習記錄(1)——Xiami全站播放數 ? Python爬蟲學習記錄(2)——LDA處理歌詞 ? 百度音樂帶標簽,作曲,演唱者,類別的歌詞數據
? Python爬蟲學習記錄(4)——傳說中的足彩倍投法。好像也不是那么靠譜
? 2011~2013.5全球所有足球比賽比分數據以及足彩各公司盤口
? Python爬蟲學習記錄(3)——用Python獲取蝦米加心歌曲,并獲取MP3下載地址
? Python爬蟲學習記錄(5)——python mongodb + 爬蟲 + web.py 的acfun視頻排行榜
? Python爬蟲學習記錄(0)——Python 爬蟲抓站 記錄(蝦米,百度,豆瓣,新浪微博)
第四:最后推薦知乎用戶@gaga salamer 的實戰練習博客
? 爬蟲教程(1)基礎入門 ? 爬蟲教程(2)性能進階
? 知乎用戶信息爬蟲(規模化爬取)? 用scrapy爬取豆瓣電影新片榜
? 用scrapy對豆瓣top250頁面爬取(多頁面爬取)? 用scrapy自動爬取下載圖片
? 用scrapy自動下載石原sama的豆瓣影人圖集(727張圖片,自動下載)
希望以上的教程可以幫助到大家。
(九)Python開發微信公眾號
我的第一個Python項目就是做的微信公眾號機器人,按照當時我的思路來講講如何學習使用Python來開發微信公眾號:大家伙收藏順手點個贊唄。微信公眾號功能開發分為兩大塊:需要調用微信內部功能、不需要調用微信內部功能,重點在調用微信內部功能組建。
1、需要調用微信內部功能 需要調用微信內部功能組件的比如:公眾號收發消息|圖片、頁面分享至朋友圈、用戶授權提取用戶基本信息、微信小店、微信公眾號菜單等內部功能組件,這些功能組件在微信公眾號開發者文檔里面找到:微信公眾平臺開發者文檔
對于這些功能組件,開發者文檔都提供了詳細的接口文檔,告訴你如何調用,而你只需要用Python調用這些接口即可。比如一個很簡單的消息發送的方法如下:
當然在這所有的調用之前,需要進行一些授權驗證,同樣開發者文檔有一套完整的接入指南:接入指南廖雪峰的官方網站
(三)、簡要描述Python的垃圾回收機制(garbage collection)Python中的垃圾回收是以引用計數為主,標記-清除和分代收集為輔。引用計數:Python在內存中存儲每個對象的引用計數,如果計數變成0,該對象就會消失,分配給該對象的內存就會釋放出來。標記-清除:一些容器對象,比如list、dict、tuple,instance等可能會出現引用循環,對于這些循環,垃圾回收器會定時回收這些循環(對象之間通過引用(指針)連在一起,構成一個有向圖,對象構成這個有向圖的節點,而引用關系構成這個有向圖的邊)。
分代收集:Python把內存根據對象存活時間劃分為三代,對象創建之后,垃圾回收器會分配它們所屬的代。每個對象都會被分配一個代,而被分配更年輕的代是被優先處理的,因此越晚創建的對象越容易被回收。
如果你想要深入了解Python的GC機制,點擊這里:[轉載]Python垃圾回收機制--完美講解!
(四)、Python多線程(multi-threading)。這是個好主意嗎?
Python并不支持真正意義上的多線程,Python提供了多線程包。Python中有一個叫Global Interpreter Lock(GIL)的東西,它能確保你的代碼中永遠只有一個線程在執行。經過GIL的處理,會增加執行的開銷。這就意味著如果你先要提高代碼執行效率,使用threading不是一個明智的選擇,當然如果你的代碼是IO密集型,多線程可以明顯提高效率,相反如果你的代碼是CPU密集型的這種情況下多線程大部分是雞肋。
想要深入詳細了解多線程,點擊這里:詳解Python中的多線程編程_python 想了解一下IO密集和CPU密集可以點擊這里:CPU-bound(計算密集型)和I/O bound(I/O密集型)
(五)、說明os,sys模塊不同,并列舉常用的模塊方法? 官方文檔:
os模板提供了一種方便的使用操作系統函數的方法
sys模板可供訪問由解釋器使用或維護的變量和與解釋器交互的函數 另一種回答:
os模塊負責程序與操作系統的交互,提供了訪問操作系統底層的接口。sys模塊負責程序與Python解釋器的交互,提供了一系列的函數和變量用戶操作Python運行時的環境。一些常用的方法:
一些常用的用法示例:
想要了解更詳細的使用請訪問:os和sys模塊Python
(七)、Python中pass語句的作用是什么?
pass語句不會執行任何操作,一般作為占位符或者創建占位程序
(八)、Python是如何進行類型轉換的?
Python提供了將變量或值從一種類型轉換為另一種類型的內置方法。
(九)、Python里面如何拷貝一個對象?
Python中對象之間的賦值是按引用傳遞的,如果要拷貝對象需要使用標準模板中的copy copy.copy:淺拷貝,只拷貝父對象,不拷貝父對象的子對象。copy.deepcopy:深拷貝,拷貝父對象和子對象。
(十)、__new__和__init__的區別。
__init__為初始化方法,__new__方法是真正的構造函數。
__new__是實例創建之前被調用,它的任務是創建并返回該實例,是靜態方法 __init__是實例創建之后被調用的,然后設置對象屬性的一些初始值。總結:__new__方法在__init__方法之前被調用,并且__new__方法的返回值將傳遞給__init__方法作為第一個參數,最后__init__給這個實例設置一些參數。
想要更加詳細的了解這兩個方法,請點擊:Python中的__new__及其用法
(十一)、Python中單下劃線和雙下劃線分別是什么?
__name__:一種約定,Python內部的名字,用來與用戶自定義的名字區分開,防止沖突
_name:一種約定,用來指定變量私有
__name:解釋器用_classname__name來代替這個名字用以區別和其他類相同的命名
想要更加詳細的了解這兩者的區別,請點擊:Python中的下劃線(譯文)
(十二)、說一說Python自省。
自省就是面向對象的語言所寫的程序在運行時,所能知道對象的類型。簡單一句話就是運行時能夠獲得對象的類型。比如:type()、dir()、getattr()、hasattr()、isinstance()
想要完整的理解Python自省,請點擊:Python自省(反射)指南 有關于元類以及單例模式會在后面文章中做詳細的解釋說明。
本文參考文獻資料: ?
七、PYTHON 一些基礎面試題目總結 ? 很全的 Python 面試題 ? Python自省(反射)指南
? Python學習筆記
(十二):lambda表達式與函數式編程 ? Python面試必須要看的15個問題
(十一)Python書籍 入門書籍
? 《Python學習手冊》 ? 《Head First Python》
? 《Learn Python The Hard Way》 ? 《Python編程:入門到實踐》 ? 《笨辦法學Python》 ? 《簡明Python教程》
進階書籍
? 《Python Cookbook(第三版)》 ? 《流暢的Python》 ? 《Python源碼剖析》 ? 《Python進階》
? 《Flask Web開發:基于Python的Web應用開發實戰》