點擊上方“CSDN”,選擇關(guān)注
關(guān)鍵時刻,第一時間送達!
人生苦短,我用 Python。
為什么?
簡單明了的理由當然是開發(fā)效率高。但是學習 Python 的初學者往往會面臨以下殘酷的現(xiàn)狀:
網(wǎng)上充斥著大量的學習資源、書籍、視頻教程和博客,但是大部分都是講解基礎知識,不夠深入;也有的比較晦澀,難以理解。
如果你真的想要高效地學習 Python,那就需要掌握如何過濾網(wǎng)上的垃圾教程資源的技能,并從其他有經(jīng)驗的程序員或在線編程社區(qū)中獲得幫助。
倘若你沒有任何編程知識,或者知之甚少,從一張白紙起步,或許會更容易一些。
在本篇文章中,我們將分享 6 位技術(shù)專家學習 Python 的最佳方法,也許當你學習舉步維艱之時,他們的經(jīng)驗將會幫你躲避很多不必要的坑,以及可以讓你學會如何通過 Python 教程編寫出色的 Python 程序。
Quan Nguyen
第一位 Quan Nguyen,是來自越南的國際學生,在美國印地安那州 DePauw 大學攻讀計算機科學和數(shù)學專業(yè)學位,同時還攻讀哲學專業(yè)的學位。他兩年前開始使用 Java 進行編程,后來發(fā)現(xiàn)自己需要一種具有更高可讀性且能夠快速實現(xiàn)原型開發(fā)的編程語言,不久之后,Python 就成為他最喜歡的語言。
他對數(shù)據(jù)科學和機器學習領(lǐng)域非常感興趣,特別是對文本的情感分析。此外,他對人臉和物體識別也具有非常豐富的經(jīng)驗。
最初學習 Python 時,我使用的主要編程語言還是 Java。之所以學習 Python,是因為我想要使用一種可讀性更高并且能夠快速實現(xiàn)原型開發(fā)的編程語言(最直接的反映就是編程語言的“print”語句)。
第一階段學習
從一開始,我自己非常喜歡用 Python 編寫代碼,因為 Python 語法不僅直接、直觀,而且具有高度的一致性。一種特定的語法除了適用于特定的數(shù)據(jù)結(jié)構(gòu)之外,還適用于其他類似的數(shù)據(jù)結(jié)構(gòu),比如 Python 的內(nèi)置函數(shù) len(),它用于返回一個Python列表(https://coolpythoncodes.com/python-list-tutorial)、元組、字符串、集合等多種數(shù)據(jù)結(jié)構(gòu)的長度,而在 Java 中則有多種不同的語法,如 [variable].length、[variable].length()、length([variable])。
就如何高效地學習 Python 而言,勤加練習是最好的途徑。
在我個人的學習經(jīng)歷中,首先我是通過閱讀 Codecademy 的 Python 在線指南(https://www.codecademy.com/learn/learn-python)來熟悉Python 語法,當然也有其他類似的教程或指南來幫助你學習 Python 語法。
在第一階段的學習之后,保持一定的持續(xù)性并繼續(xù)學習 Python 是至關(guān)重要的。
進階
在此階段就需要一些中高級的教程或編程書籍,或者解決一些具有挑戰(zhàn)性的編程問題。可實踐的網(wǎng)站有:
Project Euler:https://projecteuler.net
HackerRank:https://www.hackerrank.com
CodeFights:https://codefights.com
dailyprogrammer:https://www.reddit.com/r/dailyprogrammer
雖然教程和書籍從多個角度提供不同的編程教學,讓你可以深入了解該語言的特性,但實際的上手編程讓大家有了一種更加有趣且更具挑戰(zhàn)性的通道來學習不同的編程技巧、數(shù)據(jù)結(jié)構(gòu)和第三方庫,從而解決不同的編程問題。
這兩種方法都有各自存在的價值,兩者的結(jié)合將會讓你對編程語言了解得更全面。
再次強調(diào),關(guān)鍵點還是要在于對編程保持持續(xù)性,讓你的大腦保持住對語言語法的了解,并改善你解決問題的思維過程。
實踐
創(chuàng)建自己的項目,或加入開源社區(qū)(https://coolpythoncodes.com/julien-danjou)和 Github,這些都是編程的必經(jīng)之路。對于像 Python 這樣的語言來說更是如此,如今開發(fā)者社區(qū)正以驚人的速度增長,每天都有新的庫和項目在快速更新。
通過學習一個新的 Python 庫,你不但可以繼續(xù)熟悉這門語言,還可以增加你的知識面,為未來解決實際問題打下基礎。
在開源項目上與其他人一起工作將有助于對特定主題進行深入研究和了解,同時增加你的專業(yè)性和可信度。
Dibakar Saha
第二位 Dibakar Saha,是孟加拉工程技術(shù)學院(隸屬于 Maulana Abul Kalam 科技大學)計算機科學與工程專業(yè)的一名 B.Tech 學生。他使用了很多編程語言,如 C、C ++、Java、Android、VB.NET、VB6、Python、Javascript 等。在他的博客(https://evilporthacker.blogspot.hk)中,有很多他參與過的高質(zhì)量的 Python 項目。
從我個人經(jīng)驗來講,學習一門編程語言最好的方法就是挑選一個問題,然后用編程語言來解決它。
想要解決一個問題,你需要非常清楚地了解問題本身。我的意思是你需要了解輸入、輸出、約束條件、規(guī)則和許多其他的東西。
以下是我推薦的一些步驟:
了解 Python 的基礎知識
掌握任何一門編程語言的基礎都是非常重要的。你至少首先應該明白如何輸入和輸出。
同時需要對 Python 中的列表、元組、集合和字典(https://coolpythoncodes.com/python-dictionary) 等不同的數(shù)據(jù)結(jié)構(gòu)足夠熟悉,能夠理解循環(huán)和列表。
O'Reilly 出版的《Learning Python 第 5 版》和 Google 的 Python 在線教程(https://developers.google.com/edu/python/introduction?csw=1) 可以幫助你對 Python 基礎進行足夠的了解。在看書的同時,你還應該跟隨你所學的教程進行編程練習。假設你今天學習了輸入和輸出,那么編寫一個程序,以便你可以實現(xiàn)該功能。但是,如果你已經(jīng)熟悉了這一點,那就不必了。
做項目
當你學習了 Python 的基礎知識之后,就需要做一個真正的項目來實踐了。
該項目可以是任何東西??梢允且粋€簡單的 GUI 計算器項目,也可以是一個可以區(qū)分消息是“spam”還是“ham”的復雜 AI 項目。
在這種情況下,有一個很適合初學者的網(wǎng)站可以幫助你,那就是 Automate the Boring Stuff with Python(https://automatetheboringstuff.com)。如果你是 AI 或數(shù)據(jù)分析領(lǐng)域的初學者,你不妨看看這個(https://pythonprogramming.net)。如果一個項目看起來太難了,那么你可以采用下列解決方案之一:
持續(xù)專注于這個問題,直到你能解決所有的子問題。
先把問題放到一邊,做一些與原問題有關(guān)的簡單問題,然后再回來解決原來的問題。
通過谷歌搜索解決方案是可以的,但是要盡量先獨立解決問題,自己編寫代碼,之后在去看別人是如何寫的。
借鑒其他高質(zhì)量代碼
假設你是初學者,那么你很可能寫的代碼緩慢而丑陋。因此你需要閱讀別人優(yōu)秀的代碼??梢粤私庖幌?GitHub 或者其他開源平臺的 Python 項目。
了解 Python 模塊和庫
Python 有一大堆免費的庫和模塊可以直接拿來使用,因此你需要了解常用的 Python 庫,比如 NumPy、SciPy、Pandas、Matplotlib 等。
這些庫擁有豐富的功能,你不必自己從頭開始編寫像貝葉斯類這樣的算法。使用庫可以讓你的代碼量更少且易讀。
Meenakshi Agarwal
Meenakshi Agarwal 是 TechBeamers.com 網(wǎng)站的聯(lián)合創(chuàng)始人。她是 Lucknow 大學計算機科學專業(yè)畢業(yè)生,擁有計算機應用碩士學位。她曾與大型跨國公司合作,花費數(shù)年時間,使用 C / C ++、Visual C ++、Python、Java、J2EE、C#、DotNet、Selenium、FitNesse 和其他一些技術(shù)進行軟件開發(fā),產(chǎn)品設計,測試和自動化。
我是 Meenakshi Agarwal,一名計算機科學專業(yè)的畢業(yè)生,在軟件產(chǎn)品開發(fā)和測試方面有豐富的經(jīng)驗。由于我對編程和寫作充滿熱情,所以我開始使用 Techbeamers(http://www.techbeamers.com),這是一個面向來自世界各地的程序員、測試人員和其他IT專業(yè)人員的電子學習平臺。
在我的職業(yè)生涯中,我學過很多的編程語言。但是 Python 是我最喜歡的一個。因為我是通過自學掌握 Python 的。我沒有參加任何線上、線下的培訓,主要通過在線教程和一些書來學習 Python。
在分享我的 Python 學習方法之前,你首先要清楚學習 Python 的理由。
Python 的以下優(yōu)點足以說服你學習它:
Python 非常簡單直接。你幾乎可以像偽代碼一樣讀寫它。
它有豐富的內(nèi)置庫以及第三方框架和庫。
它有一個強大的社區(qū),可以幫助你獲得任何與編程有關(guān)的答案。
現(xiàn)在讓我們看看你如何快速學習 Python。
首先是核心語法,簡單的數(shù)據(jù)類型、變量、關(guān)鍵字、條件判斷(比如if ... else)和控制語句(比如 loop)等基本語法塊。
掌握基本語法之后,編寫一些簡單的程序,如階乘、斐波納契數(shù)列、單數(shù)/偶數(shù)、計算器等等。
下一步是了解列表、集合、元組、字典等特殊的數(shù)據(jù)結(jié)構(gòu)。再次使用這些技能來解決一些實際問題,并使用這些數(shù)據(jù)結(jié)構(gòu)來構(gòu)建程序。
然后學習錯誤處理(異常:http://www.techbeamers.com/python-try-except-beginners)和文件管理(文件I/O:http://www.techbeamers.com/python-file-handling-tutorial-beginners)。
之后,了解 Python 中函數(shù)(https://coolpythoncodes.com/python-function)和類(https://coolpythoncodes.com/object-oriented-programming-python)的概念。使用函數(shù)和類重寫之前的程序。
了解 Python 的模塊和庫。Python 有非常多的庫,雖然沒有直接包含,但是很容易安裝,沒有任何理由去重新造輪子。
現(xiàn)在是幫助他人學習 Python 的時候了。教會別人是加強你所學知識的最好方法之一。
參加論壇上的討論貼,幫助其他成員解決問題。加入社區(qū),并考慮在 StackOverflow 或 Reddit 上回答問題。
最后,選擇一個專業(yè)領(lǐng)域。例如,你可以開始投身機器學習。這將需要你學習一些第三方庫和包,如 Pandas、NumPy、SciPy 等。
Aniruddha Chaudhari
Aniruddha Chaudhari 擁有計算機科學碩士學會(來自印度 NIT Trichy),他是 CSEstack.org (Programming and Computer Science Portal)的創(chuàng)始人。Python 是他第一個也是他最喜愛的語言。除此之外,他還學習了多種編程語言,如 C、C ++ 等。他的博客(http://www.csestack.org/python/)上有很多非常棒的 Python 教程。
同其他編程語言(如 C、C ++ 和 Java)相比,Python 學習起來很容易,至少入門很容易。
Python 有兩個版本:Python 2.x 和 Python 3.x。選擇合適的 Python 版本非常重要。
有很多大公司使用 Python 2.x 構(gòu)建項目。所以如果你想?yún)⑴c這些項目,Python 2.x 是正確的選擇。如果你不確定,那么選擇 Python 3.x 吧,因為 Python 3.x 是未來。
如果你想有效地學習 Python,你首先應該專注于兩件事:
了解 Python 中的數(shù)據(jù)結(jié)構(gòu);
熟悉 Python 庫的使用。
Python 數(shù)據(jù)結(jié)構(gòu)包括字符串、列表、元組等等。
它們的區(qū)別是什么?何時使用哪種結(jié)構(gòu)及其各種關(guān)聯(lián)的方法來操縱數(shù)據(jù)?
Python 提供的庫非常強大。有大量的庫可用于各種項目。
例如,如果你想成為一名數(shù)據(jù)科學家,有許多模塊和庫供你使用,如 Panda、Numpy、Tensoflow 。找到你感興趣的領(lǐng)域,并搜索該領(lǐng)域的庫,這些庫通常都可以免費使用。
為了進行實際編程,需要遵循如下步驟:
創(chuàng)建一個目錄來保存所有的 Python 程序;
開始先開發(fā)一些小項目。如果你正在學習 GUI,那么可以開發(fā)一個計算器(http://www.csestack.org/code-for-gui-calculator-in-python),從社交網(wǎng)站獲取數(shù)據(jù)并進行分析;
把實用函數(shù)編寫成一個 Python 程序;
在新的 Python 程序中使用這些實用函數(shù)作為模塊。(重復使用代碼是很好的做法,可以節(jié)省大量時間。)
從你的小項目中創(chuàng)造出一些東西來激勵自己,給自己一些值得學習的東西,并保持持續(xù)。找機會獎勵自己。開發(fā)自己的興趣保持長期學習!
學習一門編程語言不是要知道它所有的語法。而是了解它的特點和優(yōu)勢,以及你可以用它解決什么實際問題。至于語法你隨時都可以通過 Google 進行查詢。
你練習的越多,對編程語言的掌握就越好。用 Python 進行快樂編程!
Krishna Kant Mishra
我是 Krishna Kant Mishra,喜歡看板球,解決數(shù)學難題和聽音樂。我來自印度,是一名計算機科學工程專業(yè)的畢業(yè)生。我目前在 Wipro Technology 公司擔任 VMWare / Cloud 管理員。
高效學習 Python 的方法
首先要回答的問題是我為什么學習 Python?這是前提。
學習 Python 的基礎知識很簡單,但想要將知識應用到項目中可能很困難。我自身在嘗試學習沒有上下文和應用程序的代碼。
以下是我高效學習 Python 的技巧:
一、學習 Python 語法
毫無疑問,你需要掌握基本知識。你應該有一個基本的語法在你的腦海中,至少能夠知道用[:]進行字符串操作。
如果你連基本的語法都不了解,那么很難實現(xiàn)有用的東西。但是不要學習基礎方面花太長的時間。我們的目標是學習非?;A的知識,然后在自己感興趣的領(lǐng)域開始自己的項目。
我自己花了不到一個星期的時間,在 Codecademy 上學習 Python 的基礎知識。這足以開始一個項目了。
二、看盡可能多的教程
假設我想了解 Python 中的 SQLite 數(shù)據(jù)庫。
我首先在 Google 上搜索教程并掃描搜索結(jié)果,然后選擇深入和易于理解的教程。
我通常使用“Print Friendly&PDF”(谷歌瀏覽器擴展)將在線教程轉(zhuǎn)換為 PDF,以便我可以離線閱讀在線教程。當然閱讀書籍也可以,我選擇了特定領(lǐng)域且通俗易懂的書籍(SQLite database in Python)。
在學習過程中如果遇到困難,我會在 Reddit、StackOverflow 和 Quora 等社區(qū)中向其他 Python 程序員尋求幫助。
問題解決之后,我會想一個我可以實現(xiàn)的項目,比如把我從網(wǎng)上抓取的數(shù)據(jù)存儲在數(shù)據(jù)庫中。
我的原則是,不要只閱讀教程,你需要親自動手寫代碼,否則很容易遺忘。
獨立完成項目
掌握了 Python 語法的基本知識之后,你又完成了 Python 中一個特定領(lǐng)域的教程?,F(xiàn)在就可以開始一個項目了。
你的項目可以是任何東西:
自動化領(lǐng)域(Practical Programming for Total Beginners:https://automatetheboringstuff.com)
編寫一些你感興趣的東西,比如數(shù)據(jù)分析(Python Programming Tutorials:http://pythonprogramming.net/dashboard)
需要注意的是:不是不提倡看教程,而是不提倡看大量的基礎教程。例如,當你嘗試執(zhí)行特定的項目時,Python 編程教程是可以查看的。
但是要盡量獨立,先嘗試自己解決問題,然后再看別人是怎么解決問題的。
不斷迭代寫好的代碼
不斷溫習 Python 語言特性,找出哪些方法是已經(jīng)過時的。所以,再次強化字典的使用,以及對字符串進行切片和反轉(zhuǎn)處理等等。
當你意識到你的代碼不好時該怎么做
在這一點上,你可以把自己的代碼與其他人的進行比較。比較時,請記住以下問題:
如何使我的代碼更快?
如何改進我的代碼?
總結(jié)
Python 發(fā)展和變化非常之快。大概只有少數(shù)人可以聲稱自己完全理解它。你需要進行持續(xù)地學習和開發(fā)項目。
如果你這樣做的話,你會發(fā)現(xiàn)自己在 6 個月前寫的代碼簡直糟糕得沒法看。如果你有這樣的體會,那證明你走在正確的軌道上。
Python 是一門非常有趣和有益的語言,如果使用正確的學習方法,我相信任何人都可以達到高水平的掌握程度。
Cliff John Hill
入門
Python 從一開始就被設計成一門易學的語言。最有效的學習方法是通過在線課程學習,比如:
Google 的 Python 教程:
https://developers.google.com/edu/python/introduction
Codecademy 一些課程:
https://www.codecademy.com
Python.org 的 Python 教程:
https://www.python.org
學習 Python 之時,首先需要掌握簡單的語法和基本概念。個人建議找一個感興趣的開源項目并投入其中。
進階
進一步的培訓可以來自 PyCon講座(http://pyvideos.org),幾乎所有的講座都可以通過 YouTube 在線獲得。Python Mush Watch (http://pymust.watch)的視頻比較集中,另外 我推薦 Raymond Hettinger 的視頻(他非常擅長搞演講)此外 David Beazly、Brandon Rhodes、Guido van Rossum 和 Ned Batchelder 的教程也不錯。
“Python Crash Course”這本書很棒,它可以讓你快速掌握基本知識,然后使用 Python 進行一些實用的編程。
Python 學習資源匯總
以下是一些有用的學習資料,可以幫助你學習 Python。
Python官方文檔
Python 3.6.3 文檔:https://docs.python.org/3
Python 2.7.14 文檔:https://docs.python.org/2.7
Python 好書推薦
Tony Gaddis 的《Starting Out with Python》
Python Crash 課程:Eric Matthes 撰寫的《Python編程 從入門到實踐》
Zed Shaw 的 《"笨辦法"學 Python》
Doug Hellmann 的 《The Python Standard Library by Example》
Al Sweigart 的 《Python 編程快速上手:讓繁瑣工作自動化》
Allen B. Downey 的 《像計算機科學家一樣思考 Python》
Mark Pilgrim 的《Dive Into Python 3》
Python 程序員播客
Michael Kennedy 的 Talk Python To Me Podcast:
https://talkpython.fm
Michael Kennedy 和 Brian Okken 主持的 PythonBytes:
http://pythonbytes.fm
obias Macey 主持的 Podcast.__init__:
https://www.podcastinit.com
Kenneth Reitz 和 Alex Gaynor 主持的 Import This: A Podcast for Humans
Test and Code Podcast:
http://pythontesting.net/test-podcast
Python 程序員簡報
Pycoder’s Weekly:http://www.pycoders.com
PythonTips:https://pythontips.com
ImportPython:http://importpython.com/newsletter
Python Weekly:https://www.pythonweekly.com
最后,也歡迎大家在評論區(qū)補充 Python 的學習資料,技術(shù)之路,我們共同進步。
原文:
https://coolpythoncodes.com/best-way-learn-python-programming
作者:Rapture Godson
譯者:安翔
責編:蘇宓