六星源課堂:怎么系統(tǒng)化的自學(xué)Python?
一、什么是Python?
python 是一門非常簡(jiǎn)單易學(xué)好用,同時(shí)功能強(qiáng)大的編程語(yǔ)言,具有豐富和強(qiáng)大的庫(kù),開發(fā)效率特別高。它常被昵稱為膠水語(yǔ)言,能夠把用其他語(yǔ)言制作的各種模塊(尤其是C/C++)很輕松地聯(lián)結(jié)在一起。
python 是一門的面向?qū)ο蟮慕忉屝途幊陶Z(yǔ)言,Python語(yǔ)法簡(jiǎn)潔清晰優(yōu)雅,特色之一是強(qiáng)制用空白符(white space)作為語(yǔ)句縮進(jìn)。
幸運(yùn)的是,Python 是一門初學(xué)者友好的編程語(yǔ)言,想要完全掌握它,你不必花上太多的時(shí)間和精力。
Python的設(shè)計(jì)哲學(xué)之一就是簡(jiǎn)單易學(xué),體現(xiàn)在兩個(gè)方面:
(1)語(yǔ)法簡(jiǎn)潔明了:相比于其它語(yǔ)言,它的語(yǔ)法特性不多不少,大多數(shù)都很簡(jiǎn)單直接,不玩兒玄學(xué)。
(2)切入點(diǎn)很多:Python可以讓你可以做很多事情,科學(xué)計(jì)算和數(shù)據(jù)分析、爬蟲、Web 網(wǎng)站、游戲、命令行實(shí)用工具等等等等,總有一個(gè)是你感興趣并且愿意投入時(shí)間的。
二、了解Python的用途
1. 開發(fā)Web:常用的Web框架有 Django、 flask
2. 數(shù)學(xué)處理:NumPy擴(kuò)展提供大量與許多標(biāo)準(zhǔn)數(shù)學(xué)庫(kù)的接口
3. 數(shù)據(jù)挖掘:深度學(xué)習(xí)、人工智能等項(xiàng)目都得用 python 開發(fā)
4. 文本處理:python提供的re模塊能支持正則表達(dá)式,還提供SGML,XML分析模塊,許多程序員利用python進(jìn)行XML程序的開發(fā)
5. 數(shù)據(jù)庫(kù)編程:程序員可通過(guò)遵循Python DB-API(數(shù)據(jù)庫(kù)應(yīng)用程序編程接口)規(guī)范的模塊與Microsoft SQL,Server,Oracle,Sybase,DB2,MySQL、SQLite等數(shù)據(jù)庫(kù)通信。python自帶有一個(gè)Gadfly模塊,提供了一個(gè)完整的SQL環(huán)境
6. 網(wǎng)絡(luò)編程:提供豐富的模塊支持sockets編程,能方便快速地開發(fā)分布式應(yīng)用程序。很多大規(guī)模軟件開發(fā)計(jì)劃例如Zope,Mnet 及BitTorrent. Google都在廣泛地使用它
7. 游戲開發(fā):有pygame等模塊用來(lái)快速開發(fā)游戲
三、Python學(xué)習(xí)準(zhǔn)備
無(wú)論你使用的電腦是Mac還是Windows,我都建議你下載一個(gè)免費(fèi)的能夠讓你輕松訪問(wèn)盡可能多的有用模塊的Python發(fā)行版本
1、下載python軟件
下載地址:https://www.python.org/downloads/windows/
2、下載編輯器(推薦使用pycharm,sublime可作為日常測(cè)試用)
pycharm地址:http://www.jetbrains.com/pycharm/download/
sublime3地址:http://www.sublimetext.com/3
雖說(shuō)python上手容易,但說(shuō)到自學(xué)python必須有這么些前提:
(1)知道程序設(shè)計(jì)語(yǔ)言是什么,本身有其他語(yǔ)言的基礎(chǔ),或者曾經(jīng)自學(xué)成功過(guò)其他語(yǔ)言。
(2)邏輯思維能力還是比較重要的,畢竟程序設(shè)計(jì),重在設(shè)計(jì),而非一群代碼的堆砌。
(3)能夠堅(jiān)持每天寫上幾十行代碼甚至更多,不間斷,不放棄,學(xué)習(xí)學(xué)習(xí),自覺學(xué)成后需要的是大量的練習(xí),練習(xí)可以是自己網(wǎng)上找的,也可以是自己跟著書本/課程視頻模仿,思考,分析后的成果物。
系統(tǒng)地自學(xué)Python分為以下五個(gè)階段:
一、Python基礎(chǔ)階段
掌握python腳本、python界面編程能力、數(shù)據(jù)庫(kù)、基本爬蟲、多線程多進(jìn)程開發(fā)能力,可以勝任基本的python開發(fā)工作。知識(shí)點(diǎn):
1.數(shù)據(jù)的存儲(chǔ):Python概述、進(jìn)制以及進(jìn)制轉(zhuǎn)換、原碼、反碼、補(bǔ)碼、第一個(gè)Python程序、終端讀取與打印等。
2.運(yùn)算符與表達(dá)式:關(guān)鍵字和標(biāo)識(shí)符、算術(shù)運(yùn)算符、python數(shù)據(jù)類型、賦值運(yùn)算符、運(yùn)算符、復(fù)合運(yùn)算符、條件控制語(yǔ)句(if..else...)、邏輯運(yùn)算符等。
3.循環(huán):循環(huán)語(yǔ)句之while、循環(huán)語(yǔ)句之for、break與continue語(yǔ)句等。
4.基礎(chǔ)數(shù)據(jù)結(jié)構(gòu):Number與數(shù)學(xué)函數(shù)操作、String(查找,替換,下標(biāo)索引、列表(常用)、元組、字典(常用)、set集合、迭代器與生成器(常用)、函數(shù)概述等。
5.函數(shù):函數(shù)的調(diào)用、簡(jiǎn)單函數(shù)的定義、函數(shù)的返回值、傳遞參數(shù)、關(guān)鍵字參數(shù)、默認(rèn)參數(shù)、不定長(zhǎng)參數(shù)、匿名函數(shù)、裝飾器、偏函數(shù)、回調(diào)函數(shù)、變量的作用域、遞歸函數(shù)、目錄遍歷、遞歸遍歷目錄、棧模擬遞歸遍歷目錄(深度遍歷)、隊(duì)列模擬遞歸遍歷目錄(廣度遍歷)等。
6.模塊:模塊概述使用標(biāo)準(zhǔn)庫(kù)中的模塊使用自定義模塊name屬性包的概述安裝第三方模塊virtualenv與時(shí)間相關(guān)模塊。
7.面向?qū)ο缶幊蹋好嫦驅(qū)ο笏枷搿㈩惻c對(duì)象、類的方法與屬性、構(gòu)造函數(shù)與析構(gòu)函數(shù)、self的使用、重寫__ repr__ 與__str__ 函數(shù)、訪問(wèn)限制等。
8.繼承、封裝、多態(tài) :?jiǎn)卫^承的實(shí)現(xiàn)、多繼承的實(shí)現(xiàn)、函數(shù)重寫、人開槍射擊子彈小案例、多態(tài)、對(duì)象屬性與類屬性、類方法與靜態(tài)方法等。
9.面向?qū)ο蟾唠A:動(dòng)態(tài)添加屬性方法、property、運(yùn)算符重載、發(fā)郵件與發(fā)短信等。
10.文件操作與異常處理:StringIO與BytesIO、文件的管理操作、文件讀寫(csv、txt)操作、異常處理等。
11.高階函數(shù)與測(cè)試:調(diào)試(打印、斷言、logging、pdb)
12.排列組合與正則表達(dá):破解密碼(排列、組合、排列組合)、正則表達(dá)等。
13.網(wǎng)絡(luò)編程:TCP/IP簡(jiǎn)介、TCP編程、UDP編程等。
二、Linux和數(shù)據(jù)庫(kù)階段
掌握Linux操作系統(tǒng)管理技術(shù),可以搭建幾乎所有Linux環(huán)境服務(wù)器。知識(shí)點(diǎn):
1.Linux操作系統(tǒng):常見操作系統(tǒng)、操作系統(tǒng)發(fā)展歷史、系統(tǒng)的使用、Linux版本、Linux應(yīng)用領(lǐng)域、虛擬機(jī)與Vmware的安裝、Linux版本與Ubuntu 16.04、配置自己的Linux系統(tǒng)、編程IDE的安裝、apt-get安裝軟件包。
2.文件系統(tǒng)與用戶管理:目錄訪問(wèn)、文件與目錄的管理、文件的權(quán)限、用戶管理。
3.文本操作命令:文本命令、文本編輯器Vi/Vim。
4.網(wǎng)路命令、進(jìn)程管理與服務(wù)配置:網(wǎng)絡(luò)管理命令、系統(tǒng)目錄、重要系統(tǒng)文件、設(shè)置開機(jī)啟動(dòng)與登陸啟動(dòng)、IP配置、服務(wù)的啟動(dòng)停止、防火墻配置。
5.Shell編程與bash、源文件編譯:基礎(chǔ)IO操作、流程控制、定義變量與環(huán)境變量、腳本傳參、定時(shí)任務(wù)、定時(shí)系統(tǒng)操作。
6.版本控制:Git的安裝與配置、GitHub的注冊(cè)與使用、Clone與Fork、Git常用命令、標(biāo)簽、分支與源、多人協(xié)作開發(fā)。
7.MySQL基本使用:MySQL的安裝、MySQL簡(jiǎn)介、MySQL基本命令腳本、MySQL與Python的交互。
8.MongoDB的基本使用:MongoDB安裝、MongoDB的基本操作。
9.Redis的基本使用:Redis安裝、Redis的基本操作、Redis的數(shù)據(jù)類型、Redis的備份與恢復(fù)。
三、Python web開發(fā)
掌握Python后端框架,解決前后端Web開發(fā)問(wèn)題,知識(shí)點(diǎn):
1.HelloDjango:BS/CS,MVC/MTV、Django請(qǐng)求流程、Admin管理。
2.Models:ORM、模型字段屬性、CRUD、聚合函數(shù),F(xiàn),Q對(duì)象。
3.Models&Templates:模型對(duì)應(yīng)關(guān)系、模板加載、靜態(tài)資源、模板語(yǔ)法。
4.Views:路由規(guī)則、反向解析、請(qǐng)求與響應(yīng)、會(huì)話技術(shù)cookie,token,ses-sion、文件上傳。
5.Advanced:驗(yàn)證碼、分頁(yè)器、類視圖、中間件、日志、緩存、信號(hào)、Cerlery、用戶權(quán)限,用戶角色。
6.RESTful:REST概念、HelloREST、數(shù)據(jù)序列化、請(qǐng)求與響應(yīng)、視圖,轉(zhuǎn)換器、關(guān)系,超鏈接、認(rèn)證和權(quán)限。
四、Python爬蟲階段
掌握分布式多線程大型爬蟲技術(shù),能開發(fā)企業(yè)級(jí)爬蟲程序。
1.多線程原理:同步與異步、串聯(lián)與并發(fā)、線程、開辟一個(gè)線程、線程安全與線程鎖、多線程隊(duì)列。
2.協(xié)程:線程的局限、協(xié)程的定義與原理、協(xié)程的實(shí)現(xiàn)。
3.爬蟲的概念及相關(guān)工具:爬蟲的概念及作用、HTTP協(xié)議原理、工具的安裝、使用。
4.Python http libs:urllib的使用、示例requests庫(kù)的使用、bs4庫(kù)的使用、xpath語(yǔ)法。
5.爬蟲實(shí)戰(zhàn):使用requests編寫-個(gè)簡(jiǎn)單爬蟲、改造requests爬蟲為多線程版、利用redis改造多線程版爬蟲至分布式。
6.scrapy框架:scrapy安裝、創(chuàng)建項(xiàng)目、創(chuàng)建spider文件,編寫parse方法、scrapy子命令、運(yùn)行scrapy爬蟲程序、命令行傳遞參數(shù)、進(jìn)一步解析二級(jí)頁(yè)面、parse方法之前傳遞參數(shù)、導(dǎo)出json、Csv格式的數(shù)據(jù)、scrapy爬蟲的狀態(tài)保存、item的定義、item的使用、pipeline的使用、使用pipeline將items存儲(chǔ)至MySQ、Lscrapy整體架構(gòu)、downloadermiddleware、使用downloadermiddleware實(shí)現(xiàn)IP代理池、spidermiddleware、scrapy插件、scrapy-redis。
7.量化交易:自動(dòng)化交易理論、Python量化交易框架。
五、Python機(jī)器學(xué)習(xí)階段
掌握Python數(shù)據(jù)挖掘分析,入門人工智能。知識(shí)點(diǎn):
1.jupyter入門:jupyter軟件安裝、jupyter入門、numpy學(xué)習(xí)。
2.pandas:pandas入門、pandas-Series、pandas數(shù)據(jù)丟失、pandas索引、pandas數(shù)據(jù)處理、基于Pandas的人臉識(shí)別技術(shù)。
3.scipy:scipy學(xué)習(xí)
4.matpoltlib:數(shù)據(jù)可視化的概念、可視化圖表的繪制、動(dòng)畫及交互渲染、數(shù)據(jù)的合并與分組。
5.KNN:臨近算法、預(yù)處理、KNN相關(guān)函數(shù)。
6.線性回歸與邏輯斯蒂回歸:線性回歸、邏輯斯蒂回歸。
7.決策樹與貝葉斯:貝葉斯學(xué)習(xí)、決策樹學(xué)習(xí)。
8.SVM與K均值聚類:SVC學(xué)習(xí)
9.Kmeans:Kmeans學(xué)習(xí)
10.機(jī)器學(xué)習(xí)框架TensorFlow:機(jī)器學(xué)習(xí)、權(quán)重分配與優(yōu)選方案、深度學(xué)習(xí)、自動(dòng)化神經(jīng)網(wǎng)絡(luò)、AI網(wǎng)絡(luò)的描述。
11.自然語(yǔ)言處理與社交網(wǎng)絡(luò)處理:文本數(shù)據(jù)處理、自然語(yǔ)言處理及NLTK、主題模型、LDA、圖論簡(jiǎn)介、網(wǎng)絡(luò)的操作及數(shù)據(jù)可視化。
國(guó)外Python的使用率非常高,但在國(guó)內(nèi)Python是近幾年才火起來(lái),Python正處于高速上升期市場(chǎng)對(duì)于Python開發(fā)人才的需求量急劇增加,學(xué)習(xí)Python的前景比較好。
以上為本次分享的全部?jī)?nèi)容,如果對(duì)編程想獲得更多了解,請(qǐng)前往六星源課堂,開啟你的編程之旅~