如何系統的自學Python?

原來有計算機編程基礎,如何全面系統的學習Python,要學習哪些方面的知識,分別有哪些書籍或者是教程推薦?

另外,用Python可以做些什麼,如何利用Python進行web開發?


Python是一門極易入門的編程語言,希望你能學有所成,堅持很重要,真的。

我是自學的Python。從對Python一無所知,到在博客上寫Python相關的系列文章(Python快速教程),前後有將近三年的時間。期間有不少門檻,但也充滿樂趣。樂趣是自學的最大動力。Python是一個容易編寫,又功能強大的動態語言。使用Python,可以在短短几行內實現相當強大的功能。通過自己寫一些小程序,迅速的看到效果,發現問題,這是學習Python最便利的地方。在學習Python之前,可以了解一下Python的特點和設計理念(Python簡史)。在設計之初,Python就試圖在複雜、強大的C和方便、功能有限的bash之間,找到一個平衡點。Python的語法比較簡單,用起來很方便,因此有些人把它當作腳本語言使用。但Python要比普通的腳本語言功能強大很多。通過良好的可拓展性,Python的功能相當全面,應用面很廣:web伺服器,網路爬蟲,科學運算,機器學習,遊戲開發…… 當然,天下沒有免費的午餐,也沒有完美的語言,Python為了達到上述兩點,有意的犧牲了Python的運行速度。如果你是在編寫高業務量、運算量的程序,可能Python並不是最好的選擇。-----Python的主體內容大致可以分為以下幾個部分:面向過程。包括基本的表達式,if語句,循環,函數等。如果你有任何一個語言的基礎,特別是C語言的基礎,這一部分就是分分鐘了解下Python規定的事。如果你沒有語言基礎,建議從Python Programming為參考書。這本書是計算機導論性質的教材,不需要編程基礎。面向對象,包括面向對象的基本概念,類,方法,屬性,繼承等。Python是面向對象的語言,「一切皆對象」。面向對象是很難迴避的。Python的面向對象機制是相對比較鬆散的,不像Java和C++那麼嚴格。好處是容易學,容易維護,壞處是容易犯錯。應用功能,包括IO,數據容器如表和詞典,內置函數,模塊,格式化字元串等。這些在其它語言中也經常出現,有比較強的實用性。高級語法,上下文管理器,列表推導,函數式編程,裝飾器,特殊方法等。這些語法並不是必須的,你可以用前面比較基礎的語法實現。學這些高級語法的主要原因是:它們太方便了。比如列表推導一行可以做到的事情,用循環結構要好幾行才行。學習Python主體最好的參考書是Learning Python,它非常全面,滿滿的都是乾貨。雖然很厚,讀起來並不難讀。另一個是參考官網的教程Python.org-----Python號稱「Battery Included",也就是說,功能都已經包含在了語言中。這一自信,主要來自Python功能全面的標準庫。標準庫提供了許多功能模塊,每個模塊是某一方面功能的介面,比如文件管理,操作系統互動,字元處理,網路介面,編碼加密等等。The Python Standard Library中,你可以看到標準庫模塊的列表。這裡也是標準庫最好的學習資料。如果想找書,我只看到過兩本關於標準庫的:Python Essential ReferenceThe Python Standard Library by Example說實話,這兩本都不算很好的標準庫教材,而標準庫的參考書也確實很難寫。因為標準庫只是調用功能的介面,最終實現的是Python和系統的互動。這需要很強的系統知識,比如文件系統知識,進程管理,http原理,socket編程,資料庫原理…… 如果這些知識都已經準備充分,那麼標準庫學起來完全沒有難度。然而,這些背景知識的學習並非一朝一夕的事情。更深入的Python學習也是如此,需要大量的背景知識,而不是Python自身。如果你對Python的編譯和運行機制感興趣,你可以往Python底層這一深度挖。如果你對應用感興趣,你可以多學習幾個自己用的上的第三方包。學到這個時候,就是要自己探索的廣闊空間了。-----基本上,學過主體內容之後,Python還是要靠做項目來練習。有不少小練習題類型的資料,比如Python Cookbook。但更好的方式是自己去想一些應用場景,用Python來解決。Python功能全面,所以不要擔心自己想的問題Python解決不了 (基本上Python解決不了的問題,別的語言也沒戲)。比如我學習多線程的動力,就因為要並行的下載大量的文件。基本上一個項目下來,會用到Python好幾塊的內容,知識會特別鞏固。最後,和其它任何知識的學習一樣,筆記和總結很重要。在看參考書和看網頁時,可以做一些筆記。等到學了一段時間後,可以把筆記整理成更有條理的參考卡片(reference card),或者寫博客。這也是我寫「Python快速教程」的主要原因。

自己多問下為什麼學python

如果一門語言沒有改變你的編程思維,那麼它不值得你去學習」。如果這麼說,我們大學的時候,學習了c,c++,java,C#,算是值得學習么?很多時候是不值得,我覺得我們大學的課程就是用java,c#,c++把"C程序設計"又上了一遍.

這是因為,學校的老師會C和java之類的,所以要跟著規矩開這門課,(這也就是為什麼,許多學校還在教vb,),這也就是為什麼,你所以為的一樣就是大家都有For都有while,都有switch..都有Class...都有int 都有float,所謂的不一樣就是用C有指針,java沒有,這就是為什麼教育是失敗的,這也就是為什麼,我目前認識的幾個編程大牛

python的優點:簡單 我所說的簡單,是相比於象C和C++這樣的語言,你為了編程,要學習許多偏底層的東西.在比如,你在學習一個新的編程範式,或者想要馬上做個例子看看,試驗某個API,如果你是寫java的,你不得不去寫一個main,寫一些構造,即使有IDE這樣的東西,能夠為你帶來代碼生成器,而我做得就是寫一段「腳本」,或者打開python互動式解釋器就行了。

自己認識的python朋友出去工作,工資比較高,然後自己又剛剛好是會python所以選擇學習python,這樣的人比較危險但是也比較有激勵,還有就是覺得python比其他開發語言好用。

學完python前景會咋樣

其實我個人是很看好python未來的就業前景的,因為我認識太多的工程師都已經在學python,很多都是月收入大幾萬的

我個人也並非一直用python。前些年主要用c/c++以及java開發一些通信,移動系統,互聯網通信。近3年開始才轉向python。坦白的說,這可能與你相處的公司以及環境不大一樣。隨便舉個例子,google的protocol buffer協議一出來就具有c++/python/java三種語言支持。google的廣告系統早在03,04年左右就一併對python進行了webservice支持,大部分涉及基礎核心系統的公司,都開始對python進行了擴展支持。甚至開源社區的postgresql資料庫,除了自身的ansi SQL,pgsql,pg/TCL,PG/PERL之外對python進行了內嵌支持,唯獨卻沒有呼聲很高的java。在FREEBSD(MIT)/LINUX(GPL)平台上,對java可能排斥性比較大,但綜合而言,目前python發展還沒有java那種普及,主要是python大部分工作仍然是在較為深入地系統層和框架層做設計開發,例如django,SQLAlchemy,fail2ban,mail郵件系統,twisted等等。這部分對於那種習慣應用前輩們框架的編碼人員而言,缺乏創造力的他們根本無法適用這種開發。尤其在python涉及一些系統層面需要有較強的c/c++能力,這部分人在國內要麼就累得要死沒時間,要麼就啥都不會就會拷貝代碼,而國內公司也鮮有主動去做這部分基礎勞動的,大多都是等別人做好了在直接拿來用,所以造就了任何技術性的東西出來,國內都是先等等看,然後抄襲應用。

大環境如此,但千萬誤認為先等等看吧。對於一個技術人員而言,缺乏對新技術的渴望與熱情,這是一種非常危險的事情。我工作8年了,按照國內很多的人的說法早已不做代碼了,但又一次在聽一個老外的演講,他說他50多歲仍然每天堅持寫代碼,了解最新的動態,所以他才能做到他們公司的首席科學家,因此它才能時刻指導項目團隊前進並保證項目的質量。他坦言對於一個不寫代碼並且不了解最新的技術動態的技術人員或者技術團隊的負責人而言,這種團隊也就足夠做作小項目,一旦壓力和項目過大,就會有很多問題漏出來。

對於新人而言,無論學習什麼技術,都要以鼓勵的姿態出現。太多用薪水和你個人所看到的現狀去衡量一門技術,那絕對是欠缺眼光的。任何一門技術,一旦有人學習,他有可能逐漸成為這個領域的專家,即便再濫再沒有人用的開發語言技術,他也有可能就是明日的奠基者或者大師。

自己如何確定目標

在生活中學會不斷挖掘自己的潛力。我們都是一個普通人,可能並不清楚自己到底在哪方面佔有優勢。所以,學著在生活中找到自己的優勢,並根據優勢選擇一定的就業方向。

不隨波逐流。不要看周圍的人做什麼,自己就做什麼,也許別人做的並不適合你。別人的優勢很可能會成為你的劣勢。所以,堅定自己的想法,讓自己知道那些方面適合自己,自己可以勝任。

不斷嘗試可能成為自己的優勢。你不知道什麼適合自己,所以才要大膽、勇敢地嘗試。找到一種可以屬於你的獨特的優勢。

堅定信念。一旦你堅定了自己的信念,就不要被別人的意見或是諷刺或是嘲笑所干擾。別人不是你,不懂的你在想什麼,不清楚你開始這件事的源頭。你的事情,不了解你的人,沒有資格輕易評說。

不茫然,不多想。別讓太多的事干擾到你奮鬥下去的信念。夢想不容許太多的雜念。那些雜念只會讓你的心愈來愈脆弱,多為一個人考慮,到頭來,傷害的還是自己。

選擇自己學習方法

每個人都有適合自己的方法,有的人去選擇自學,有的人選擇看視頻學習,有的人選擇報名培訓班,那在這個時候,你就要自己考慮清楚,到底那樣對的幫助是最大的,個人覺得是跟著培訓班最好的,畢竟人家的實戰項目多,我們學軟體開發的都知道實戰項目對於學好一門語言是 很重要的。

學習python有那些誤區

具體裡面的誤區非常的多,那些就不需要我去寫出來,我給你說的一般都是心態的問題,首先一個覺得自己會java和c++,然後我學習python就很牛,但是你要知道語言是有很多相同的地方,但是不是通用,一定要自己學習的仔細。還有一種就是覺得我不會英語,我要先去把英語學習好在來學python。因為自己想還壞主意然後學習,這樣的都是容易找進誤區的。

其實:這個問題說簡單也簡單,說複雜也複雜.

一是要學好一句話興趣.當你開始了興趣是唯一驅動你繼續學習的動力,因為程序設計是腦力勞動是智慧的結晶,每一個你自己寫的程序都是心血.

二是要有堅定毅力.因為程序設計是純腦力勞動,在你學習的道路上會有很多的問題,你應該知道一個符號都不能錯,錯了輕則通不過程序,重則結果錯誤.也許你為了一個小問題需要很長的時間,有時候時間都不一定能夠解決問題.QQ群:304050799 查資料(百度 Google能夠解決絕大部分問題) 看該軟體(語言)的幫助等等

三是有目標,比如做個聊天軟體或是什麼的,然後做設計查資料編碼測試等等通過做實際的感興趣的東西來學習是最快的.及時困難很多很大,也要逐步的來.你一開始可以做個小東西積累經驗.

python的幫助文檔是很好的東西,英文的.如果你想學編程就要會英語同時裝個金山詞霸.483546416群裡面有點python資料,其實網上也有,可以下.

祝君好運,編程的道路漫漫,堅持就是勝利

怎麼樣才能學好python

學好python你需要一個良好的環境,一個優質的開發交流群,群里都是那種相互幫助的人才是可以的,我有建立一個python學習交流群,在群里我們相互幫助,相互關心,相互分享內容,這樣出問題幫助你的人就比較多,群號是304加上050最後799,這樣就可以找到大神聚合的群,如果你只願意別人幫助你,不願意分享或者幫助別人,那就請不要加了,你把你會的告訴別人這是一種分享。

感覺寫的好,對你有幫助,就點個讚唄,別光只收藏哈.~( ̄▽ ̄)~


1、書

黃哥推薦學習Python 10本好書。

知乎專欄

2、工具

Python集成開發工具

知乎專欄

3、學習方法

如何訓練自己的編程思路

知乎專欄

部分免費Python免費視頻

pythonpeixun/article

黃哥Python 知乎答疑集

知乎專欄


推薦閱讀:

給妹子講python--01好用的列表
Python入門 數據結構 dict字典
利用簡書首頁文章標題數據生成詞雲
學習筆記三:改善Python程序的91個建議

TAG:Python | Python入門 | Python教程 |