北京千鋒互聯(lián)科技有限公司成都分公司駱昊(jackfrued)在Github上發(fā)布了一個Python學習秘笈,從萌新到王者的100天Python學習之旅。
簡單的說,Python是一個“優(yōu)雅”、“明確”、“簡單”的編程語言。
學習曲線低,非專業(yè)人士也能上手
開源系統(tǒng),擁有強大的生態(tài)圈
解釋型語言,完美的平臺可移植性
支持面向?qū)ο蠛秃瘮?shù)式編程
能夠通過調(diào)用C/C++代碼擴展功能
代碼規(guī)范程度高,可讀性強
目前幾個比較流行的領(lǐng)域,Python都有用武之地。
云基礎(chǔ)設(shè)施 - Python / Java / Go
DevOps - Python / Shell / Ruby / Go
網(wǎng)絡(luò)爬蟲 - Python / PHP / C++
數(shù)據(jù)分析挖掘 - Python / R / Scala / Matlab
機器學習 - Python / R / Java / Lisp
作為一名Python開發(fā)者,主要的就業(yè)領(lǐng)域包括:
Python服務(wù)器后臺開發(fā) / 游戲服務(wù)器開發(fā) / 數(shù)據(jù)接口開發(fā)工程師
Python自動化運維工程師
Python數(shù)據(jù)分析 / 數(shù)據(jù)可視化 / 大數(shù)據(jù)工程師
Python爬蟲工程師
Python聊天機器人開發(fā) / 圖像識別和視覺算法 / 深度學習工程師
下圖顯示了主要城市Python招聘需求量及薪資待遇排行榜(截止到2018年5月)。
給初學者的幾個建議:
Make English as your working language.
All experience comes from mistakes.
Don t be one of the leeches.
Either stand out or kicked out.
課程表
Day01~15 -Python語言基礎(chǔ)
Day16~Day20 -Python語言進階
常用數(shù)據(jù)結(jié)構(gòu)
函數(shù)的高級用法 - “一等公民” / 高階函數(shù) / Lambda函數(shù) / 作用域和閉包 / 裝飾器
面向?qū)ο蟾呒壷R - “三大支柱” / 類與類之間的關(guān)系 / 垃圾回收 / 魔術(shù)屬性和方法 / 混入 / 元類 / 面向?qū)ο笤O(shè)計原則 / GoF設(shè)計模式
迭代器和生成器 - 相關(guān)魔術(shù)方法 / 創(chuàng)建生成器的兩種方式 /
并發(fā)和異步編程 - 多線程 / 多進程 / 異步IO / async和await
Day21~30 -Web前端入門
用HTML標簽承載頁面內(nèi)容
用CSS渲染頁面
用JavaScript處理交互式行為
jQuery入門和提高
Vue.js入門
Element的使用
Bootstrap的使用
Day31~35 -玩轉(zhuǎn)Linux操作系統(tǒng)
操作系統(tǒng)發(fā)展史和Linux概述
Linux基礎(chǔ)命令
Linux中的實用程序
Linux的文件系統(tǒng)
Vim編輯器的應(yīng)用
環(huán)境變量和Shell編程
軟件的安裝和服務(wù)的配置
網(wǎng)絡(luò)訪問和管理
其他相關(guān)內(nèi)容
Day36~40 -數(shù)據(jù)庫基礎(chǔ)和進階
關(guān)系型數(shù)據(jù)庫MySQL
范式理論 - 設(shè)計二維表的指導思想
數(shù)據(jù)完整性
數(shù)據(jù)一致性
DDL - 數(shù)據(jù)定義語言 - create / drop / alter
DML - 數(shù)據(jù)操作語言 - insert / delete / update / select
DCL - 數(shù)據(jù)控制語言 - grant / revoke
關(guān)系型數(shù)據(jù)庫概述
MySQL的安裝和使用
SQL的使用
相關(guān)知識
在Python中操作MySQL
NoSQL入門
NoSQL概述
Redis概述
Mongo概述
Day41~55 -實戰(zhàn)Django
Day56~60 -實戰(zhàn)Flask
Day61~65 -實戰(zhàn)Tornado
Day66~75 -爬蟲開發(fā)
Day76~90 -數(shù)據(jù)處理和機器學習
Day91~100 -團隊項目開發(fā)
第91天:團隊開發(fā)和項目選題
軟件過程模型
角色:產(chǎn)品所有者(決定做什么,能對需求拍板的人)、團隊負責人(解決各種問題,專注如何更好的工作,屏蔽外部對開發(fā)團隊的影響)、開發(fā)團隊(項目執(zhí)行人員,具體指開發(fā)人員和測試人員)。
準備工作:商業(yè)案例和資金、合同、憧憬、初始產(chǎn)品需求、初始發(fā)布計劃、入股、組建團隊。
敏捷團隊通常人數(shù)為8-10人。
工作量估算:將開發(fā)任務(wù)量化,包括原型、Logo設(shè)計、UI設(shè)計、前端開發(fā)等,盡量把每個工作分解到最小任務(wù)量,最小任務(wù)量標準為工作時間不能超過兩天,然后估算總體項目時間。把每個任務(wù)都貼在白板上面,白板上分三部分:to do(待完成)、in progress(進行中)和done(已完成)。
產(chǎn)品的Backlog(用戶故事、產(chǎn)品原型)。
計劃會議(評估和預(yù)算)。
日常開發(fā)(站立會議、番茄工作法、結(jié)對編程、測試先行、代碼重構(gòu)……)。
修復(fù)bug(問題描述、重現(xiàn)步驟、測試人員、被指派人)。
評審會議(Showcase)。
回顧會議(當前周期做得好和不好的地方)。
個體和互動高于 流程和工具
工作的軟件高于 詳盡的文檔
客戶合作高于 合同談判
響應(yīng)變化高于 遵循計劃
可行性分析(研究做還是不做),輸出《可行性分析報告》。
需求分析(研究做什么),輸出《需求規(guī)格說明書》和產(chǎn)品界面原型圖。
概要設(shè)計和詳細設(shè)計,輸出概念模型圖、物理模型圖、類圖、時序圖等。
編碼 / 測試。
上線 / 維護。
經(jīng)典過程模型(瀑布模型)
敏捷開發(fā)(Scrum)- 產(chǎn)品所有者、Scrum Master、研發(fā)人員 - Sprint
補充:敏捷軟件開發(fā)宣言
項目團隊組建
代碼注釋太少或者沒有注釋
代碼破壞了語言的最佳實踐
反模式編程(意大利面代碼、復(fù)制-黏貼編程、自負編程、……)
團隊的構(gòu)成和角色
說明:謝謝付祥英女士繪制了下面這張精美的公司組織架構(gòu)圖。
編程規(guī)范和代碼審查(flake8、pylint)
Python中的一些“慣例”(請參考《Python慣例-如何編寫Pythonic的代碼》)
影響代碼可讀性的原因
團隊開發(fā)工具介紹
請參考《團隊項目開發(fā)》。
版本控制:Git、Mercury
缺陷管理:Gitlab、Redmine
敏捷閉環(huán)工具:禪道、JIRA
持續(xù)集成:Jenkins、Travis-CI
項目選題和理解業(yè)務(wù)
選題范圍設(shè)定
CMS(用戶端):新聞聚合網(wǎng)站、問答/分享社區(qū)、影評/書評網(wǎng)站等。
MIS(用戶端+管理端):KMS、KPI考核系統(tǒng)、HRS、CRM系統(tǒng)、供應(yīng)鏈系統(tǒng)、倉儲管理系統(tǒng)等。
App后臺(管理端+數(shù)據(jù)接口):二手交易類、報刊雜志類、小眾電商類、新聞資訊類、旅游類、社交類、閱讀類等。
其他類型:自身行業(yè)背景和工作經(jīng)驗、業(yè)務(wù)容易理解和把控。
需求理解、模塊劃分和任務(wù)分配
需求理解:頭腦風暴和競品分析。
模塊劃分:畫思維導圖(XMind),每個模塊是一個枝節(jié)點,每個具體的功能是一個葉節(jié)點(用動詞表述),需要確保每個葉節(jié)點無法再生出新節(jié)點,確定每個葉子節(jié)點的重要性、優(yōu)先級和工作量。
任務(wù)分配:由項目負責人根據(jù)上面的指標為每個團隊成員分配任務(wù)。
制定項目進度表(每日更新)
第92天:數(shù)據(jù)庫設(shè)計和OOAD
概念模型和正向工程
UML(統(tǒng)一建模語言)的類圖
通過模型創(chuàng)建表(正向工程)
python manage.py makemigrations apppython manage.py migrate
物理模型和反向工程
PowerDesigner
過數(shù)據(jù)表創(chuàng)建模型(反向工程)
python manage.py inspectdb > app/models.py
第93-98天:使用Django開發(fā)項目
說明:具體內(nèi)容請參考《Django知識點概述》
項目開發(fā)中的公共問題
數(shù)據(jù)庫的配置(多數(shù)據(jù)庫、主從復(fù)制、數(shù)據(jù)庫路由)
緩存的配置(分區(qū)緩存、鍵設(shè)置、超時設(shè)置、主從復(fù)制、故障恢復(fù)(哨兵))
日志的配置
分析和調(diào)試(Django-Debug-ToolBar)
好用的Python模塊(日期計算、圖像處理、數(shù)據(jù)加密、三方API)
REST API設(shè)計
RESTful架構(gòu)
理解RESTful架構(gòu)
RESTful API設(shè)計指南
RESTful API最佳實踐
API接口文檔的撰寫(《網(wǎng)絡(luò)API接口設(shè)計》)
RAP2
YAPI
django-REST-framework的應(yīng)用
項目中的重點難點剖析
使用緩存緩解數(shù)據(jù)庫壓力 - Redis
使用消息隊列做解耦合和削峰 - Celery + RabbitMQ
第99-100天:測試和部署
單元測試
測試的種類
編寫單元測試(unittest、pytest、nose2、tox、ddt、……)
測試覆蓋率(coverage)
項目部署
說明:請參考《項目部署上線指南》。
部署前的準備工作
關(guān)鍵設(shè)置(SECRET_KEY / DEBUG / ALLOWED_HOSTS / 緩存 / 數(shù)據(jù)庫)
HTTPS / CSRF_COOKIE_SECUR / SESSION_COOKIE_SECURE
日志相關(guān)配置
Linux常用命令回顧
Linux常用服務(wù)的安裝和配置
uWSGI/Gunicorn和Nginx的使用
對于不需要大量定制化的簡單應(yīng)用程序,Gunicorn是一個不錯的選擇,uWSGI的學習曲線比Gunicorn要陡峭得多,Gunicorn的默認參數(shù)就已經(jīng)能夠適應(yīng)大多數(shù)應(yīng)用程序。
uWSGI支持異構(gòu)部署。
由于Nginx本身支持uWSGI,在線上一般都將Nginx和uWSGI捆綁在一起部署,而且uWSGI屬于功能齊全且高度定制的WSGI中間件。
在性能上,Gunicorn和uWSGI其實表現(xiàn)相當。
Gunicorn和uWSGI的比較
虛擬化技術(shù)(Docker)
性能測試
說明:具體內(nèi)容請參考《Django知識點概述》。
AB的使用
SQLslap的使用
sysbench的使用
自動化測試
使用Shell和Python進行自動化測試
使用Selenium實現(xiàn)自動化測試
Selenium IDE
Selenium WebDriver
Selenium Remote Control
測試工具Robot Framework介紹
項目性能調(diào)優(yōu)
數(shù)據(jù)庫性能調(diào)優(yōu) - 請參考《MySQL相關(guān)知識》
分表分庫
主從復(fù)制,讀寫分離
集群架構(gòu)
軟硬件優(yōu)化
SQL優(yōu)化
架構(gòu)優(yōu)化
Web服務(wù)器性能優(yōu)化
Nginx負載均衡配置
Keepalived實現(xiàn)高可用
代碼性能調(diào)優(yōu)
多線程
異步化
靜態(tài)資源訪問優(yōu)化
云存儲
CDN
-
機器學習
+關(guān)注
關(guān)注
66文章
8503瀏覽量
134627 -
python
+關(guān)注
關(guān)注
56文章
4827瀏覽量
86761 -
GitHub
+關(guān)注
關(guān)注
3文章
483瀏覽量
17686
原文標題:Github超10000星:100天從Python新手到大師
文章出處:【微信號:AI_era,微信公眾號:新智元】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
基礎(chǔ)篇3:掌握Python中的條件語句與循環(huán)
跟老齊學Python:從入門到精通
零基礎(chǔ)入門:如何在樹莓派上編寫和運行Python程序?

一個月速成python+OpenCV圖像處理

使用Python進行串口通信的案例
如何使用Python構(gòu)建LSTM神經(jīng)網(wǎng)絡(luò)模型
APM32F411板的python+pyocd命令行操作

如何幫助孩子高效學習Python:開源硬件實踐是最優(yōu)選擇
第二屆大會回顧第25期 | OpenHarmony上的Python設(shè)備應(yīng)用開發(fā)

評論