如何學習Python?
Python上手很容易, 基本有其他語言編程經驗的人可以在1周內學會Python最基本的內容.
它們包括:1.常用內置類型(int, float, bool, bytes, str, list, dict, set)的使用.2.分支if-else 循環while 迭代for的語法.3.def定義函數, 調用函數.你再花1周學習些:
1.類2.異常此時, 有些人就在簡歷中得意的自稱"會"Python了.但是學到如此程度, 在實際編程中會經常遇到挫折, 主要源自理解不夠深入, 僅僅Python語法和API層面體驗了一下.隨意列舉一些新手普遍存在的問題:1.不了解Python對象模型, 變數名, 對象概念含混.2.不了解可變對象和不可變對象, 尤其是int.3.不了解切片意味著拷貝, 在循環中大量使用, 影響效率.4.不了解切片是淺拷貝還是深拷貝.5.遇到bytes和str(2.7中的str和unicode)就頭暈.
6.經常在需要使用is的場景使用==.7.不了解def是運行時執行語句, 並且是賦值語句.8.類屬性和實例屬性混淆.9.不了解在函數中修改可變對象參數會對調用者產生影響, 導致莫名其妙錯誤.10.企圖在函數中修改全局變數, 沒有使用global, 而創建了本地變數.11.以可變對象做函數默認參數.擁有某項技能的程序員的價值, 可以用學習技能所需的成本來衡量.你用2周學習達到的這種程度, 對於企業就是沒有價值的, 因為老闆可以讓一個公司里任意其他語言的程序員經過2-3周的學習就能達到你現在的程度.Python的簡潔易用, 快速開發對項目有價值, 但這不是你的價值, 是Python的價值.所以提高自身價值, 也就是不讓別人輕易追上你. 以極低的成本替代你.
你只能快跑, 進一步學習, Python語言層面還需要學習下面一些內容:
1.使用生成器, 迭代器2.函數式編程, 匿名函數lambda, map, reduce, filter
3.列表解析, 字典解析, 集合解析, 生成器解析4.運算符重載(setattr, getattr, getitem, gt, lt...)5.property, 描述符(get, set, delete)6.上下文管理器(enter, exit)7.深入理解面向對象上述都是語言層面的,屬於內功.實戰中當然也需要一些更為具體的外功, 訓練外功可以從熟悉Python標準庫開始, 這些模塊能進入標準庫說明他們足夠好並且在實際項目中足夠常用, 列舉一些極為常用的:
1.正則表達式 re2.迭代工具 itertools3.常用數據結構 collections, heapq, array4.處理二進位數據 struct
5.隨機 random6.系統調用 os7.Python對象序列化 pickle8.多進程多線程處理 threading, multiprocessing9.網路 socket, urllib10.系統參數 sys無論練習內功或外功,結合實戰都是最好的訓練方式和檢驗手段, 可以根據個人情況以及喜好選擇, 如:
1.使用django, flask開發網站.2.開發網路爬蟲或使用Python爬蟲框架(如scrapy).3.寫一些自動化運維腳本, 定時讀取某軟體log, 出現異常自動發郵件.
4.使用selenium對網站進行測試.5.使用Python開發樹莓派小車(電機,感測器驅動).6.使用Python開發Vim插件, 如在vim中做一個音樂播放器.7.使用Python做演算法題, 如leetcode.8.opencv做圖像識別.9.使用numpy和pandas做數據處理.10.使用機器學習庫sklearn, tensorflow做應用.11.使用PyQt編寫桌面應用.12.使用scipy, matplotlib做科學計算.13.使用Python做滲透測試.
......個人建議選擇小項目進行實訓, 有些新手上來就想定一個大目標, 做的時候很挫折, 往往半途而廢.把小東西先實現, 然後優化. 接下來添加新功能, 慢慢迭代把小東西做大. 這樣在做的時候,每實現一個小功能你都會有成就感, 激勵繼續前進.
可能經過比較漫長的一段時間, 你成為了一個熟練的Python應用程序員, 還有些高級話題可以繼續學習:
1.裝飾器2.元類這些高級話題在開發框架中經常使用, 它們可以幫你創建更靈活的代碼.通常自稱一個月光速學了會Python的人基本都不是天才, 只是浮躁, 目標定的比較低而已.
不要太過急功近利, 慢慢玩, 精進.如果你覺著編程有趣, 成長也就不再痛苦, 祝學習愉快.作者: 程序員碩
鏈接:https://www.imooc.com/article/15051來源:慕課網本文原創發佈於慕課網 ,轉載請註明出處,謝謝合作
推薦閱讀:
※pandas可視化(5)【官方文檔解讀】-- Hexagonal Bin Plot(我翻譯為六角形箱體圖)、餅圖
※Python計算程序運行時間—time.time()、time.clock()
※PyQt5系列教程(1):我與PyQt5有個約會
※數學不行還學AI-第4話-圖解張量(內有惡貓)