https://www.zhihu.com/question/29138020html
https://docs.python.org/zh-cn/3/前端
https://www.liaoxuefeng.com/wiki/1016959663602400java
https://www.runoob.com/python3/python3-tutorial.htmlnode
http://www.pythontutor.com/visualize.html#mode=editpython
給初學者的幾個建議:mysql
先附上github地址:nginx
下面是這個一百天計劃裏面的學習框架,我在這裏放上來。git
Day01 - 初識Python
Python簡介 - Python的歷史 / Python的優缺點 / Python的應用領域程序員
搭建編程環境 - Windows環境 / Linux環境 / MacOS環境github
從終端運行Python程序 - Hello, world / print函數 / 運行程序
使用IDLE - 交互式環境(REPL) / 編寫多行代碼 / 運行程序 / 退出IDLE
註釋 - 註釋的做用 / 單行註釋 / 多行註釋
Day02 - 語言元素
程序和進制 - 指令和程序 / 馮諾依曼機 / 二進制和十進制 / 八進制和十六進制
變量和類型 - 變量的命名 / 變量的使用 / input函數 / 檢查變量類型 / 類型轉換
數字和字符串 - 整數 / 浮點數 / 複數 / 字符串 / 字符串基本操做 / 字符編碼
運算符 - 數學運算符 / 賦值運算符 / 比較運算符 / 邏輯運算符 / 身份運算符 / 運算符的優先級
應用案例 - 華氏溫度轉換成攝氏溫度 / 輸入圓的半徑計算周長和麪積 / 輸入年份判斷是不是閏年
Day03 - 分支結構
分支結構的應用場景 - 條件 / 縮進 / 代碼塊 / 流程圖
if語句 - 簡單的if / if-else結構 / if-elif-else結構 / 嵌套的if
應用案例 - 用戶身份驗證 / 英制單位與公制單位互換 / 擲骰子決定作什麼 / 百分制成績轉等級制 / 分段函數求值 / 輸入三條邊的長度若是能構成三角形就計算周長和麪積
Day04 - 循環結構
循環結構的應用場景 - 條件 / 縮進 / 代碼塊 / 流程圖
while循環 - 基本結構 / break語句 / continue語句
for循環 - 基本結構 / range類型 / 循環中的分支結構 / 嵌套的循環 / 提早結束程序
應用案例 - 1~100求和 / 判斷素數 / 猜數字遊戲 / 打印九九表 / 打印三角形圖案 / 猴子吃桃 / 百錢百雞
Day05 - 構造程序邏輯
基礎練習 - 水仙花數 / 完美數 / 五人分魚 / Fibonacci數列 / 迴文素數
綜合練習 - Craps賭博遊戲
Day06 - 函數和模塊的使用
函數的做用 - 代碼的壞味道 / 用函數封裝功能模塊
定義函數 - def語句 / 函數名 / 參數列表 / return語句 / 調用自定義函數
調用函數 - Python內置函數 / 導入模塊和函數
函數的參數 - 默認參數 / 可變參數 / 關鍵字參數 / 命名關鍵字參數
函數的返回值 - 沒有返回值 / 返回單個值 / 返回多個值
做用域問題 - 局部做用域 / 嵌套做用域 / 全局做用域 / 內置做用域 / 和做用域相關的關鍵字
用模塊管理函數 - 模塊的概念 / 用自定義模塊管理函數 / 命名衝突的時候會怎樣(同一個模塊和不一樣的模塊)
Day07 - 字符串和經常使用數據結構
字符串的使用 - 計算長度 / 下標運算 / 切片 / 經常使用方法
列表基本用法 - 定義列表 / 用下表訪問元素 / 下標越界 / 添加元素 / 刪除元素 / 修改元素 / 切片 / 循環遍歷
列表經常使用操做 - 鏈接 / 複製(複製元素和複製數組) / 長度 / 排序 / 倒轉 / 查找
生成列表 - 使用range建立數字列表 / 生成表達式 / 生成器
元組的使用 - 定義元組 / 使用元組中的值 / 修改元組變量 / 元組和列表轉換
集合基本用法 - 集合和列表的區別 / 建立集合 / 添加元素 / 刪除元素 / 清空
集合經常使用操做 - 交集 / 並集 / 差集 / 對稱差 / 子集 / 超集
字典的基本用法 - 字典的特色 / 建立字典 / 添加元素 / 刪除元素 / 取值 / 清空
字典經常使用操做 - keys()方法 / values()方法 / items()方法 / setdefault()方法
基礎練習 - 跑馬燈效果 / 列表找最大元素 / 統計考試成績的平均分 / Fibonacci數列 / 楊輝三角
綜合案例 - 雙色球選號 / 井字棋
Day08 - 面向對象編程基礎
類和對象 - 什麼是類 / 什麼是對象 / 面向對象其餘相關概念
定義類 - 基本結構 / 屬性和方法 / 構造器 / 析構器 / __str__方法
使用對象 - 建立對象 / 給對象發消息
面向對象的四大支柱 - 抽象 / 封裝 / 繼承 / 多態
基礎練習 - 定義學生類 / 定義時鐘類 / 定義圖形類 / 定義汽車類
Day09 - 面向對象進階
屬性 - 類屬性 / 實例屬性 / 屬性訪問器 / 屬性修改器 / 屬性刪除器 / 使用__slots__
類中的方法 - 實例方法 / 類方法 / 靜態方法
運算符重載 - __add__ / __sub__ / __or__ /__getitem__ / __setitem__ / __len__ / __repr__ / __gt__ / __lt__ / __le__ / __ge__ / __eq__ / __ne__ / __contains__
類(的對象)之間的關係 - 關聯 / 繼承 / 依賴
繼承和多態 - 什麼是繼承 / 繼承的語法 / 調用父類方法 / 方法重寫 / 類型斷定 / 多重繼承 / 菱形繼承(鑽石繼承)和C3算法
綜合案例 - 工資結算系統 / 圖書自動折扣系統 / 自定義分數類
Day10 - 圖形用戶界面和遊戲開發
使用tkinter開發GUI
使用pygame三方庫開發遊戲應用
「大球吃小球」遊戲
Day11 - 文件和異常
Day12 - 字符串和正則表達式
Day13 - 進程和線程
Day14 - 網絡編程入門和網絡應用開發
Day15 - 圖像和文檔處理
Day41 - 快速上手
Day42 - 深刻模型
Day43 - 靜態資源和Ajax請求
Day44 - 表單的應用
Day45 - Cookie和Session
Day46 - 報表和日誌
Day47 - 中間件的應用
Day48 - 先後端分離開發入門
Day49 - RESTful架構和DRF入門
Day50 - RESTful架構和DRF進階
Day51 - 使用緩存
Day52 - 文件上傳和富文本編輯
Day53 - 短信和郵件
Day54 - 異步任務和定時任務
Day55 - 單元測試和項目上線
Day56 - Flask入門
Day57 - 模板的使用
Day58 - 表單的處理
Day59 - 數據庫操做
Day60 - 項目實戰
Day61 - 預備知識
Day62 - Tornado入門
Day63 - 異步化
Day64 - WebSocket的應用
Day65 - 項目實戰
Day66 - 網絡爬蟲和相關工具
Day67 - 數據採集和解析
Day68 - 存儲數據
Day69 - 併發下載
Day70 - 解析動態內容
Day71 - 表單交互和驗證碼處理
Day72 - Scrapy入門
Day73 - Scrapy高級應用
Day74 - Scrapy分佈式實現
Day75 - 爬蟲項目實戰
Day76 - 機器學習基礎
Day77 - Pandas的應用
Day78 - NumPy和SciPy的應用
Day79 - Matplotlib和數據可視化
Day80 - k最近鄰(KNN)分類
Day81 - 決策樹
Day82 - 貝葉斯分類
Day83 - 支持向量機(SVM)
Day84 - K-均值聚類
Day85 - 迴歸分析
Day86 - 大數據分析入門
Day87 - 大數據分析進階
Day88 - Tensorflow入門
Day89 - Tensorflow實戰
Day90 - 推薦系統
第91天: 團隊項目開發準備
補充:敏捷軟件開發宣言
角色:產品全部者(決定作什麼,能對需求拍板的人)、團隊負責人(解決各類問題,專一如何更好的工做,屏蔽外部對開發團隊的影響)、開發團隊(項目執行人員,具體指開發人員和測試人員)。
準備工做:商業案例和資金、合同、憧憬、初始產品需求、初始發佈計劃、入股、組建團隊。
敏捷團隊一般人數爲8-10人。
工做量估算:將開發任務量化,包括原型、Logo設計、UI設計、前端開發等,儘可能把每一個工做分解到最小任務量,最小任務量標準爲工做時間不能超過兩天,而後估算整體項目時間。把每一個任務都貼在白板上面,白板上分三部分:to do(待完成)、in progress(進行中)和done(已完成)。
請參考《團隊項目開發》。
2.經過數據表建立模型(反向工程)
python manage.py inspectdb > app/models.py
第94天: 網絡API接口設計
第95天: 使用Django開發項目
第97天: 電商網站技術要點剖析
第98天: 項目部署上線和性能調優
3.代碼性能調優
4.靜態資源訪問優化
第99天: 面試中的公共問題
第100天: 英語面試
做者:駱昊 (jackfrued)
====================
筆記連接(基於Python 2.7):
筆記目錄:
=================
力。
Python 的設計哲學之一就是 簡單易學,體如今兩個方面:廢話很少說,學會一門語言的捷徑只有一個: Getting Started
¶ 起步階段
任何一種編程語言都包含兩個部分:硬知識和軟知識,起步階段的主要任務是掌握硬知識。
°1 硬知識
「硬知識」指的是編程語言的語法、算法和數據結構、編程範式等,例如:變量和類型、循環語句、分支、函數、類。這部分知識也是具備普適性的,看上去是掌握了一種語法,實際是創建了一種思惟。例如:讓一個 Java 程序員去學習 Python,他能夠很快的將 Java 中的學到的面向對象的知識 map 到 Python 中來,所以可以快速掌握 Python 中面向對象的特性。
若是你是剛開始學習編程的新手,一本可靠的語法書是很是重要的。它看上去可能很是枯燥乏味,但對於創建穩固的編程思惟是必不可少。
下面列出了一些適合初學者入門的教學材料:
❖「笨方法學 Python」:http://learnpythonthehardway.org/book/
這本書在講解 Python 的語法成分時,還附帶大量可實踐的例子,很是適合快速起步。
❖「廖雪峯的 Python 2.7 教程」:Home - 廖雪峯的官方網站
Python 中文教程的翹楚,專爲剛剛步入程序世界的小白打造。
❖「The Hitchhiker’s Guide to Python!」:The Hitchhiker’s Guide to Python!
這本指南着重於 Python 的最佳實踐,無論你是 Python 專家仍是新手,都能得到極大的幫助。
❖「Python 官方文檔」:Our Documentation
實踐中大部分問題,均可以在官方文檔中找到答案。
❖ 輔助工具:Python Tutor
一個 Python 對象可視化的項目,用圖形輔助你理解 Python 中的各類概念。
用一種方法,最好是隻有一種方法來作一件事。
學習也是同樣,雖然推薦了多種學習資料,但實際學習的時候,最好只選擇其中的一個,堅持看完。
必要的時候,可能須要閱讀講解數據結構和算法的書,這些知識對於理解和使用 Python 中的對象模型有着很大的幫助。
°2 軟知識
「軟知識」則是特定語言環境下的語法技巧、類庫的使用、IDE的選擇等等。這一部分,即便徹底不瞭解不會使用,也不會妨礙你去編程,只不過寫出的程序,看上去顯得「傻」了些。
對這些知識的學習,取決於你嘗試解決的問題的領域和深度。對初學者而言,起步階段極易走火,或者在選擇 Python 版本時徘徊不決,一下子看 2.7 一下子又轉到 3.0,或者徜徉在類庫的大海中沒法自拔,Scrapy,Numpy,Django 什麼都要試試,或者參與編輯器聖戰、大括號縮進探究、操做系統辯論賽等無心義活動,或者成天跪舔語法糖,老想着怎麼一行代碼把全部的事情作完,或者去構想聖潔的性能安全通用性健壯性所有滿分的解決方案。
不少「大牛」都會告誡初學者,用這個用那個,少走彎路,這樣反而把初學者推向了真正的彎路。
還不如告訴初學者,學習原本就是個須要你去走彎路出 Bug,只能腳踏實地,沒有奇蹟只有狗屎的過程。
選擇一個方向先走下去,哪怕髒醜差,走不動了再看看有沒有更好的解決途徑。
本身走了彎路,你才知道這麼作的好處,才能理解爲何人們能夠手寫狀態機去匹配卻偏要發明正則表達式,爲何面向過程能夠解決卻偏要面向對象,爲何我能夠操縱每一根指針卻偏要自動管理內存,爲何我能夠嵌套回調卻偏要用 Promise...
更重要的時,你會明白,高層次的解決方法都是對低層次的封裝,並非任何狀況下都是最有效最合適的。
技術涌進就像波浪同樣,那些陳舊的封存已久的技術,消退了早晚還會涌回的。就像如今移動端應用、手遊和 HTML5 的火熱,某些方面不正在重演過去 PC 的那些歷史麼?
所以,不要擔憂本身走錯路誤了終身,堅持並保持進步纔是正道。
起步階段的核心任務是掌握硬知識,軟知識作適當瞭解,有了穩固的根,粗壯的枝幹,才能長出濃密的葉子,結出甜美的果實。
¶ 發展階段
完成了基礎知識的學習,一定會感到一陣空虛,懷疑這些語法知識是否是真的有用。
沒錯,你的懷疑是很是正確的。要讓 Python 發揮出它的價值,固然不能停留在語法層面。
發展階段的核心任務,就是「跳出 Python,擁抱世界」。
在你面前會有多個分支:科學計算和數據分析、爬蟲、Web 網站、遊戲、命令行實用工具等等等等,這些都不是僅僅知道 Python 語法就能解決的問題。
拿爬蟲舉例,若是你對計算機網絡,HTTP協議,HTML,文本編碼,JSON一無所知,你能作好這部分的工做麼?而你在起步階段的基礎知識也一樣重要,若是你連循環遞歸怎麼寫都還要查文檔,連 BFS 都不知道怎麼實現,這就像工匠作石凳每次起錘都要思考錘子怎麼使用同樣,很是低效。
在這個階段,不可避免要接觸大量類庫,閱讀大量書籍的。
°1 類庫方面
「Awesome Python 項目」:vinta/awesome-python · GitHub
這裏列出了你在嘗試解決各類實際問題時,Python 社區已有的工具型類庫,以下圖所示:
你能夠按照實際需求,尋找你須要的類庫。
至於相關類庫如何使用,必須掌握的技能即是閱讀文檔。因爲開源社區大多數文檔都是英文寫成的,因此,英語很差的同窗,須要惡補下。
°2 書籍方面:
這裏我只列出一些我以爲比較有一些幫助的書籍,詳細的請看豆瓣的書評:
科學和數據分析:
❖「集體智慧編程」:集體智慧編程 (豆瓣)
❖「數學之美」:數學之美 (豆瓣)
❖「統計學習方法」:統計學習方法 (豆瓣)
❖「Pattern Recognition And Machine Learning」:Pattern Recognition And Machine Learning (豆瓣)
❖「數據科學實戰」:數據科學實戰 (豆瓣)
❖「數據檢索導論」:信息檢索導論 (豆瓣)
爬蟲:
❖「HTTP 權威指南」:HTTP權威指南 (豆瓣)
Web 網站:
❖「HTML & CSS 設計與構建網站」:HTML & CSS設計與構建網站 (豆瓣)
...
列到這裏已經不須要繼續了。
聰明的你必定會發現上面的大部分書籍,並非講 Python 的書,而更多的是專業知識。
事實上,這裏所謂「跳出 Python,擁抱世界」,實際上是發現 Python 和專業知識相結合,可以解決不少實際問題。這個階段能走到什麼程度,更多的取決於本身的專業知識。
¶ 深刻階段
這個階段的你,對 Python 幾乎瞭如指掌,那麼你必定知道 Python 是用 C 語言實現的。
但是 Python 對象的「動態特徵」是怎麼用相對底層,連自動內存管理都沒有的C語言實現的呢?這時候就不能停留在表面了,勇敢的拆開 Python 的黑盒子,深刻到語言的內部,去看它的歷史,讀它的源碼,才能真正理解它的設計思路。
這裏推薦一本書:
「Python 源碼剖析」:Python源碼剖析 (豆瓣)
這本書把 Python 源碼中最核心的部分,給出了詳細的闡釋,不過閱讀此書須要對 C 語言內存模型和指針有着很好的理解。
另外,Python 自己是一門雜糅多種範式的動態語言,也就是說,相對於 C 的過程式、 Haskell 等的函數式、Java 基於類的面向對象而言,它都不夠純粹。換而言之,編程語言的「道學」,在 Python 中只能有限的體悟。學習某種編程範式時,從那些面向這種範式更加純粹的語言出發,纔能有更深入的理解,也能瞭解到 Python 語言的根源。
這裏推薦一門公開課
「編程範式」:斯坦福大學公開課:編程範式
講師高屋建瓴,從各類編程範式的表明語言出發,給出了每種編程範式最核心的思想。
值得一提的是,這門課程對C語言有很是深刻的講解,例如C語言的範型和內存管理。這些知識,對閱讀 Python 源碼也有大有幫助。
Python 的許多最佳實踐都隱藏在那些衆所周知的框架和類庫中,例如 Django、Tornado 等等。在它們的源代碼中淘金,也是個不錯的選擇。
¶ 最後的話
每一個人學編程的道路都是不同的,其實大都異曲同工,沒有迷路的人只有不能堅持的人。雖然聽上去有點雞湯,可是這是事實。
學習Python須要掌握以下基礎知識以及相關技能。
1.Python基礎知識(變量、語句、數據類型、數值類型、字符串、布爾類型、列表、字典、元組、條件語句、循環語句、函數、裝飾器、面向對象、網絡socket、爬蟲)
2.Python基礎庫(模塊、包、系統模塊、三方模塊)
3.python文件處理(讀、寫、執行、)
4.python字符統計
5.python數據排序
只記Python基礎語法,卻沒什麼鳥用。就像幼兒園,老師在黑板上寫的‘肉’字,記住這個字咋寫,一筆一劃的記住,只須要半天,可是把這個詞和你平時吃的東西綁定,以致於後面你想到這個字,就流口水,須要平常的重複訓練。
同理:無方向的看書,看視頻也沒什麼用,其實能夠經過直接實戰來上手,好比:
文件操做
字符排序
網絡編程
錯誤的學習方法:
不少人在學習Python的時候經常會犯下面一種狀況:
買一本厚厚的編程指南,逼本身看完,記住每一個語法,閉門看書三個月,吃透一本書,最後一行代碼也寫不出來。
正確的學習方法:
編程就像騎自行車,買一本<<騎自行車大全>>是沒有什麼用的。
正確姿式:掌握最基礎的姿式,就能夠騎上車出發了,實際聯繫幾天,摔幾跤,基本就學會了。
不少朋友反饋:Python基礎語法都學會了,但不知如何寫項目進階?
1.List,Dict特性滾瓜爛熟,就是沒法寫出實際的項目。
2.各類書籍也看,寫不出東西。
3.各類視頻也看,寫不出東西。
4.各類大會也去,名詞高大上,可是沒學到具體的技能。
對自我進行檢測:
1.給你一個字符串「come baby,python rocks!」 如何統計裏面字母o出現的次數!
思路:遍歷字符串,定義一個變量,每次o出現,都+1
2.給你一個字符串「come baby,python rocks!」 如何統計這裏面全部字母出現的次數!(普通變量確定沒法完成。)
思路:須要使用字典這類複雜的數據結構處理,字母當key,出現的次數當value,每一個key出現,對應的value+1
3.給你一個字符串「come baby,python rocks!」 如何統計這裏面字母出現次數的前三名!
思路:排序,取出前三
後續擴展練習:
1.給你一個字符串「come baby,python rocks!」 怎麼統計出現次數前三的字母。
2.一個nginx日誌文件,怎麼統計IP出現次數前三的url。
3.一個nginx日誌文件,統計IP出現前三後,如何存入MySQL數據庫。
4.存入MySQL中的日誌文件,如何輸出給瀏覽器端顯示。
5.如何美化前端表格等等。
模塊
將多個代碼塊(按功能)定義到同一個文件中。別的文件中使用時則先導入模塊,在調用模塊內變量或函數。
模塊命名要符合python變量的命名規範
1.建議全小寫英文字母和數字
2.避免與經常使用模塊或第三方模塊名稱衝突
控制模塊內代碼在使用python mod.py時執行,在導入時不執行
1.經過Global內變量__name__進行判斷
2.當以python mod.py運行腳本時__name__變量爲__main__字符串
3.當以模塊導入時__name__爲模塊名稱字符串
包
將不一樣模塊文件放在不一樣文件夾內,包文件夾下面須要有__init__.py文件用以聲明該文件爲Python包。
使用時須要從包內導入模塊後調用模塊中變量和函數。
經常使用系統模塊:
os,sys,time,datetime,urllib,xml,json,email,csv,collections,math,zipfile,trafile,hashlib
經常使用三方模塊:
requests,pyquery,django,flask,mysqlclient,paramiko,redis,lxml,dateutils,ipaddr,netaddr
模塊學習方法:
1.先知道有沒有
2.用的時候在查
內置工具:dir、help
搜索引擎:google、百度
1.Python基礎入門(入門、數據類型、條件表達、循環語句)
2.Python基礎進階(文件操做、函數、裝飾器、模塊、面向對象、網絡編程)
3.Python前端知識(Html、Css、Js、Jquery、Bootstrap、)
4.Python高級用法(Django、Flask、數據庫操做、MVC、ORM、Admin、template)
5.Python項目實戰(電商項目、爬蟲項目、經常使用組件、運維項目、代碼調優)
6.Python高級進階(數據算法、代碼規範、面試技巧)
重要:多抄、多寫、多想、多問、多看、多聽、多說
1.學習編程就是爲了解決實際的問題,把本身在工做或學習中的重複工做程序化
2.谷歌和度娘
3.加入開源社區(多看、多分享、多交流)
4.參加培訓輔導(仔細聽課、跟上課堂學習,有問題作記錄,課後查閱資料或請求他人)
5.善於記錄筆記,不斷總結,查漏補缺。
1.python基礎入門(入門、數據類型、條件表達、循環語句)
2.python基礎進階(文件操做、函數、裝飾器、模塊、面向對象、網絡編程)
3.python數據採集:(外部數據源導入分析&爬蟲本身採集數據源分析)
4.數據分析:(各類庫,如Pandas庫,Numpy庫必備數據庫)
5.數據可視化:(matplotlib庫)
重要:實用便可,最具價值,切莫花哨不適用
1.計算機視覺
典型的應用包括:人臉識別、車牌識別、掃描文字識別、圖片內容識別、圖片搜索等等。
2.天然語言處理
典型的應用包括:搜索引擎智能匹配、文本內容理解、文本情緒判斷,語音識別、輸入法、機器翻譯等等。
3.社會網絡分析
典型的應用包括:用戶畫像、網絡關聯分析、欺詐做弊發現、熱點發現等等。
4.推薦
典型的應用包括:蝦米音樂的「歌曲推薦」,某寶的「猜你喜歡」等等。
2.編程語言、工具和環境:python
python有着全品類的數據科學工具,從數據獲取、數據清洗到整合各類算法都作得很是全面。
3.編程語言、工具和環境:R
R最大的優點是開源社區,彙集了很是多功能強大可直接使用的包,絕大多數的機器學習算法在R中都有完善的包可直接使用,同時文檔也很是齊全。常見的package包括:RGtk2, pmml, colorspace, ada, amap, arules, biclust, cba, descr, doBy, e1071, ellipse等等。另外,值得一提的是R的可視化效果作得很是不錯,而這對於機器學習是很是有幫助的。
4.其餘語言
相應資深程序員GG的要求,再補充一下Java和C++相關機器學習package。
管理 Python 版本和環境的工具
管理包和依賴的工具。
本地 PyPI 倉庫服務和代理。
打包爲可執行文件以便分發。
將源碼編譯成軟件。
交互式 Python 解析器。
文件管理和 MIME(多用途的網際郵件擴充協議)類型檢測。
============ End