尋夢新聞LINE@每日推播熱門推薦文章,趣聞不漏接❤️
點擊上方「CSDN」,選擇「置頂公眾號」
關鍵時刻,第一時間送達!
人生苦短,我用 Python。
為什麼?
簡單明了的理由當然是開發效率高。但是學習 Python 的初學者往往會面臨以下殘酷的現狀:
-
網上充斥著大量的學習資源、書籍、視頻教程和博客,但是大部分都是講解基礎知識,不夠深入;也有的比較晦澀,難以理解。
如果你真的想要高效地學習 Python,那就需要掌握如何過濾網上的垃圾教程資源的技能,並從其他有經驗的工程師或在線編程社區中獲得幫助。
倘若你沒有任何編程知識,或者知之甚少,從一張白紙起步,或許會更容易一些。
在本篇文章中,我們將分享 6 位技術專家學習 Python 的最佳方法,也許當你學習舉步維艱之時,他們的經驗將會幫你躲避很多不必要的坑,以及可以讓你學會如何通過 Python 教程編寫出色的 Python 程序。
Quan Nguyen
第一位 Quan Nguyen,是來自越南的國際學生,在美國印地安那州 DePauw 大學攻讀計算機科學和數學專業學位,同時還攻讀哲學專業的學位。他兩年前開始使用 Java 進行編程,後來發現自己需要一種具有更高可讀性且能夠快速做到原型開發的編程語言,不久之後,Python 就成為他最喜歡的語言。
他對數據科學和機器學習領域非常感興趣,特別是對文本的情感分析。此外,他對人臉和物體識別也具有非常豐富的經驗。
最初學習 Python 時,我使用的主要編程語言還是 Java。之所以學習 Python,是因為我想要使用一種可讀性更高並且能夠快速做到原型開發的編程語言(最直接的反映就是編程語言的「print」語句)。
第一階段學習
從一開始,我自己非常喜歡用 Python 編寫代碼,因為 Python 語法不僅直接、直觀,而且具有高度的一致性。一種特定的語法除了適用於特定的數據結構之外,還適用於其他類似的數據結構,比如 Python 的內置函數 len(),它用於返回一個Python列表(https://coolpythoncodes.com/python-list-tutorial)、元組、字符串、集合等多種數據結構的長度,而在 Java 中則有多種不同的語法,如 [variable].length、[variable].length()、length([variable])。
就如何高效地學習 Python 而言,勤加練習是最好的途徑。
在我個人的學習經歷中,首先我是通過閱讀 Codecademy 的 Python 在線指南(https://www.codecademy.com/learn/learn-python)來熟悉Python 語法,當然也有其他類似的教程或指南來幫助你學習 Python 語法。
在第一階段的學習之後,保持一定的持續性並繼續學習 Python 是至關重要的。
進階
在此階段就需要一些中高級的教程或編程書籍,或者解決一些具有挑戰性的編程問題。可實踐的網站有:
-
Project Euler:https://projecteuler.net
-
HackerRank:https://www.hackerrank.com
-
CodeFights:https://codefights.com
-
dailyprogrammer:https://www.reddit.com/r/dailyprogrammer
雖然教程和書籍從多個角度提供不同的編程教學,讓你可以深入了解該語言的特性,但實際的上手編程讓大家有了一種更加有趣且更具挑戰性的通道來學習不同的編程技巧、數據結構和第三方庫,從而解決不同的編程問題。
這兩種方法都有各自存在的價值,兩者的結合將會讓你對編程語言了解得更全面。
再次強調,關鍵點還是要在於對編程保持持續性,讓你的大腦保持住對語言語法的了解,並改善你解決問題的思維過程。
實踐
創建自己的項目,或加入開源社區(https://coolpythoncodes.com/julien-danjou)和 Github,這些都是編程的必經之路。對於像 Python 這樣的語言來說更是如此,如今開發者社區正以驚人的速度增長,每天都有新的庫和項目在快速更新。
通過學習一個新的 Python 庫,你不但可以繼續熟悉這門語言,還可以增加你的知識面,為未來解決實際問題打下基礎。
在開源項目上與其他人一起工作將有助於對特定主題進行深入研究和了解,同時增加你的專業性和可信度。
Dibakar Saha
第二位 Dibakar Saha,是孟加拉工程技術學院(隸屬於 Maulana Abul Kalam 科技大學)計算機科學與工程專業的一名 B.Tech 學生。他使用了很多編程語言,如 C、C ++、Java、Android、VB.NET、VB6、Python、Javascript 等。在他的博客(https://evilporthacker.blogspot.hk)中,有很多他參與過的高質量的 Python 項目。
從我個人經驗來講,學習一門編程語言最好的方法就是挑選一個問題,然後用編程語言來解決它。
想要解決一個問題,你需要非常清楚地了解問題本身。我的意思是你需要了解輸入、輸出、約束條件、規則和許多其他的東西。
以下是我推薦的一些步驟:
了解 Python 的基礎知識
掌握任何一門編程語言的基礎都是非常重要的。你至少首先應該明白如何輸入和輸出。
同時需要對 Python 中的列表、元組、集合和字典(https://coolpythoncodes.com/python-dictionary) 等不同的數據結構足夠熟悉,能夠理解循環和列表。
O’Reilly 出版的《Learning Python 第 5 版》和 Google 的 Python 在線教程(https://developers.google.com/edu/python/introduction?csw=1) 可以幫助你對 Python 基礎進行足夠的了解。在看書的同時,你還應該跟隨你所學的教程進行編程練習。假設你今天學習了輸入和輸出,那麼編寫一個程序,以便你可以做到該功能。但是,如果你已經熟悉了這一點,那就不必了。
做項目
當你學習了 Python 的基礎知識之後,就需要做一個真正的項目來實踐了。
該項目可以是任何東西。可以是一個簡單的 GUI 計算器項目,也可以是一個可以區分消息是「spam」還是「ham」的複雜 AI 項目。
在這種情況下,有一個很適合初學者的網站可以幫助你,那就是 Automate the Boring Stuff with Python(https://automatetheboringstuff.com)。如果你是 AI 或數據分析領域的初學者,你不妨看看這個(https://pythonprogramming.net)。如果一個項目看起來太難了,那麼你可以採用下列解決方案之一:
-
持續專注於這個問題,直到你能解決所有的子問題。
-
先把問題放到一邊,做一些與原問題有關的簡單問題,然後再回來解決原來的問題。
通過Google搜尋解決方案是可以的,但是要盡量先獨立解決問題,自己編寫代碼,之後在去看別人是如何寫的。
借鑒其他高質量代碼
假設你是初學者,那麼你很可能寫的代碼緩慢而醜陋。因此你需要閱讀別人優秀的代碼。可以了解一下 GitHub 或者其他開源平台的 Python 項目。
了解 Python 模塊和庫
Python 有一大堆免費的庫和模塊可以直接拿來使用,因此你需要了解常用的 Python 庫,比如 NumPy、SciPy、Pandas、Matplotlib 等。
這些庫擁有豐富的功能,你不必自己從頭開始編寫像貝葉斯類這樣的算法。使用庫可以讓你的代碼量更少且易讀。
Meenakshi Agarwal
Meenakshi Agarwal 是 TechBeamers.com 網站的聯合創始人。她是 Lucknow 大學計算機科學專業畢業生,擁有計算機應用碩士學位。她曾與大型跨國公司合作,花費數年時間,使用 C / C ++、Visual C ++、Python、Java、J2EE、C#、DotNet、Selenium、FitNesse 和其他一些技術進行軟件開發,產品設計,測試和自動化。
我是 Meenakshi Agarwal,一名計算機科學專業的畢業生,在軟件產品開發和測試方面有豐富的經驗。由於我對編程和寫作充滿熱情,所以我開始使用 Techbeamers(http://www.techbeamers.com),這是一個面向來自世界各地的工程師、測試人員和其他IT專業人員的電子學習平台。
在我的職業生涯中,我學過很多的編程語言。但是 Python 是我最喜歡的一個。因為我是通過自學掌握 Python 的。我沒有參加任何線上、線下的培訓,主要通過在線教程和一些書來學習 Python。
在分享我的 Python 學習方法之前,你首先要清楚學習 Python 的理由。
Python 的以下優點足以說服你學習它:
-
Python 非常簡單直接。你幾乎可以像偽代碼一樣讀寫它。
-
它有豐富的內置庫以及第三方框架和庫。
-
它有一個強大的社區,可以幫助你獲得任何與編程有關的答案。
現在讓我們看看你如何快速學習 Python。
-
首先是核心語法,簡單的數據類型、變量、關鍵字、條件判斷(比如if … else)和控制語句(比如 loop)等基本語法塊。
-
掌握基本語法之後,編寫一些簡單的程序,如階乘、斐波納契數列、單數/偶數、計算器等等。
-
下一步是了解列表、集合、元組、字典等特殊的數據結構。再次使用這些技能來解決一些實際問題,並使用這些數據結構來構建程序。
-
然後學習錯誤處理(異常:http://www.techbeamers.com/python-try-except-beginners)和文件管理(文件I/O:http://www.techbeamers.com/python-file-handling-tutorial-beginners)。
-
之後,了解 Python 中函數(https://coolpythoncodes.com/python-function)和類(https://coolpythoncodes.com/object-oriented-programming-python)的概念。使用函數和類重寫之前的程序。
-
了解 Python 的模塊和庫。Python 有非常多的庫,雖然沒有直接包含,但是很容易安裝,沒有任何理由去重新造輪子。
-
現在是幫助他人學習 Python 的時候了。教會別人是加強你所學知識的最好方法之一。
-
參加論壇上的討論貼,幫助其他成員解決問題。加入社區,並考慮在 StackOverflow 或 Reddit 上回答問題。
-
最後,選擇一個專業領域。例如,你可以開始投身機器學習。這將需要你學習一些第三方庫和包,如 Pandas、NumPy、SciPy 等。
Aniruddha Chaudhari
Aniruddha Chaudhari 擁有計算機科學碩士學會(來自印度 NIT Trichy),他是 CSEstack.org (Programming and Computer Science Portal)的創始人。Python 是他第一個也是他最喜愛的語言。除此之外,他還學習了多種編程語言,如 C、C ++ 等。他的博客(http://www.csestack.org/python/)上有很多非常棒的 Python 教程。
同其他編程語言(如 C、C ++ 和 Java)相比,Python 學習起來很容易,至少入門很容易。
Python 有兩個版本:Python 2.x 和 Python 3.x。選擇合適的 Python 版本非常重要。
有很多大公司使用 Python 2.x 構建項目。所以如果你想參與這些項目,Python 2.x 是正確的選擇。如果你不確定,那麼選擇 Python 3.x 吧,因為 Python 3.x 是未來。
如果你想有效地學習 Python,你首先應該專注於兩件事:
-
了解 Python 中的數據結構;
-
熟悉 Python 庫的使用。
Python 數據結構包括字符串、列表、元組等等。
它們的區別是什麼?何時使用哪種結構及其各種關聯的方法來操縱數據?
Python 提供的庫非常強大。有大量的庫可用於各種項目。
例如,如果你想成為一名數據科學家,有許多模塊和庫供你使用,如 Panda、Numpy、Tensoflow 。找到你感興趣的領域,並搜尋該領域的庫,這些庫通常都可以免費使用。
為了進行實際編程,需要遵循如下步驟:
-
創建一個目錄來保存所有的 Python 程序;
-
開始先開發一些小項目。如果你正在學習 GUI,那麼可以開發一個計算器(http://www.csestack.org/code-for-gui-calculator-in-python),從社交網站獲取數據並進行分析;
-
把實用函數編寫成一個 Python 程序;
-
在新的 Python 程序中使用這些實用函數作為模塊。(重復使用代碼是很好的做法,可以節省大量時間。)
從你的小項目中創造出一些東西來激勵自己,給自己一些值得學習的東西,並保持持續。找機會獎勵自己。開發自己的興趣保持長期學習!
學習一門編程語言不是要知道它所有的語法。而是了解它的特點和優勢,以及你可以用它解決什麼實際問題。至於語法你隨時都可以通過 Google 進行查詢。
你練習的越多,對編程語言的掌握就越好。用 Python 進行快樂編程!
Krishna Kant Mishra
我是 Krishna Kant Mishra,喜歡看板球,解決數學難題和聽音樂。我來自印度,是一名計算機科學工程專業的畢業生。我目前在 Wipro Technology 公司擔任 VMWare / Cloud 管理員。
高效學習 Python 的方法
首先要回答的問題是我為什麼學習 Python?這是前提。
學習 Python 的基礎知識很簡單,但想要將知識應用到項目中可能很困難。我自身在嘗試學習沒有上下文和應用程序的代碼。
以下是我高效學習 Python 的技巧:
一、學習 Python 語法
毫無疑問,你需要掌握基本知識。你應該有一個基本的語法在你的腦海中,至少能夠知道用[:]進行字符串操作。
如果你連基本的語法都不了解,那麼很難做到有用的東西。但是不要學習基礎方面花太長的時間。我們的目標是學習非常基礎的知識,然後在自己感興趣的領域開始自己的項目。
我自己花了不到一個星期的時間,在 Codecademy 上學習 Python 的基礎知識。這足以開始一個項目了。
二、看盡可能多的教程
假設我想了解 Python 中的 SQLite 數據庫。
我首先在 Google 上搜尋教程並掃描搜尋結果,然後選擇深入和易於理解的教程。
我通常使用「Print Friendly&PDF」(Google瀏覽器擴展)將在線教程轉換為 PDF,以便我可以離線閱讀在線教程。當然閱讀書籍也可以,我選擇了特定領域且通俗易懂的書籍(SQLite database in Python)。
在學習過程中如果遇到困難,我會在 Reddit、StackOverflow 和 Quora 等社區中向其他 Python 工程師尋求幫助。
問題解決之後,我會想一個我可以做到的項目,比如把我從網上抓取的數據存儲在數據庫中。
我的原則是,不要只閱讀教程,你需要親自動手寫代碼,否則很容易遺忘。
獨立完成項目
掌握了 Python 語法的基本知識之後,你又完成了 Python 中一個特定領域的教程。現在就可以開始一個項目了。
你的項目可以是任何東西:
-
自動化領域(Practical Programming for Total Beginners:https://automatetheboringstuff.com)
-
編寫一些你感興趣的東西,比如數據分析(Python Programming Tutorials:http://pythonprogramming.net/dashboard)
需要注意的是:不是不提倡看教程,而是不提倡看大量的基礎教程。例如,當你嘗試執行特定的項目時,Python 編程教程是可以查看的。
但是要盡量獨立,先嘗試自己解決問題,然後再看別人是怎麼解決問題的。
不斷迭代寫好的代碼
不斷溫習 Python 語言特性,找出哪些方法是已經過時的。所以,再次強化字典的使用,以及對字符串進行切片和反轉處理等等。
當你意識到你的代碼不好時該怎麼做
在這一點上,你可以把自己的代碼與其他人的進行比較。比較時,請記住以下問題:
-
如何使我的代碼更快?
-
如何改進我的代碼?
總結
Python 發展和變化非常之快。大概只有少數人可以聲稱自己完全理解它。你需要進行持續地學習和開發項目。
如果你這樣做的話,你會發現自己在 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
最後,也歡迎大家在評論區補充 Python 的學習資料,技術之路,我們共同進步。
原文:
Best way to Learn Python Programming- 6 Experts Share their Amazing Learning Tips.
作者:Rapture Godson
譯者:安翔
責編:蘇宓
————— END —————