Python(發音:英[?pa?θ?n],美[?pa?θɑ:n]),是一種面向對象、直譯式電腦編程語言,也是一種功能強大的通用型語言,已經具備近二十年的發展歷史,成熟且穩定。它包含了一組完善並且容易理解的標準庫,可以輕鬆完成不少常見的任務。它的語法很是簡捷和清晰,與其它大多數程序設計語言不同,它使用縮進來定義語句。python
Python支持命令式程序設計、面向對象程序設計、函數式編程、面向切面編程、泛型編程多種編程範式。與Scheme、Ruby、Perl、Tcl等動態語言同樣,Python具有垃圾回收功能,可以自動管理存儲器使用。它常常被看成腳本語言用於處理系統管理任務和網絡程序編寫,然而它也很是適合完成各類高級任務。Python虛擬機自己幾乎能夠在全部的做業系統中運行。使用一些諸如py2exe、PyPy、PyInstaller之類的工具能夠將Python源代碼轉換成能夠脫離Python解釋器運行的程序。程序員
Python上手很容易, 基本有其餘語言編程經驗的人能夠在1周內學會Python最基本的內容。web
它們包括:正則表達式
一、經常使用內置類型(int、float、 boo、bytes、 str、 list、 dict、set)的使用算法
二、分支if-else 循環while 迭代for的語法django
三、def定義函數, 調用函數編程
你再花1周學習些:flask
一、類vim
二、異常微信
此時, 有些人就在簡歷中得意的自稱"會"Python了。可是學到如此程度, 在實際編程中會常常遇到挫折, 主要源自理解不夠深刻, 僅僅Python語法和API層面體驗了一下。
隨意列舉一些新手廣泛存在的問題:
一、不瞭解Python對象模型, 變量名,對象概念含混
二、不瞭解可變對象和不可變對象, 尤爲是int.
三、不瞭解切片意味着拷貝, 在循環中大量使用, 影響效率
四、不瞭解切片是淺拷貝仍是深拷貝
五、遇到bytes和str(2.7中的str和unicode)就頭暈
六、常常在須要使用is的場景使用==
七、不瞭解def是運行時執行語句, 而且是賦值語句
八、類屬性和實例屬性混淆
九、不瞭解在函數中修改可變對象參數會對調用者產生影響, 致使莫名其妙錯誤
十、企圖在函數中修改全局變量, 沒有使用global, 而建立了本地變量
十一、以可變對象作函數默認參數
擁有某項技能的程序員的價值,能夠用學習技能所需的成原本衡量。你用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.正則表達式 re
2.迭代工具 itertools
3.經常使用數據結構 collections, heapq, array
4.處理二進制數據 struct
5.隨機 random
6.系統調用 os
7.Python對象序列化 pickle
8.多進程多線程處理 threading, multiprocessing
9.網絡 socket, urllib
10.系統參數 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的人基本都不是天才,只是浮躁, 目標定的比較低而已。不要太過急功近利, 慢慢玩, 精進。
Python能夠作什麼?
web開發和 爬蟲是比較適合 零基礎的
自動化運維 運維開發 和 自動化測試 是適合 已經在作運維和測試的人員
大數據 數據分析 這方面 是很須要專業的 專業性相對而言比較強
科學計算 通常都是科研人員 在用
機器學習 和 人工智能 首先 學歷 要求高 其次 高數要求高 難度很大
我有一個微信公衆號,常常會分享一些python技術相關的乾貨;若是你喜歡個人分享,能夠用微信搜索「python語言學習」關注。歡迎你們加入千人交流答疑羣:588090942