想像一下,在我們得到真正想要的東西的時候,我們必須要攀上某些懸崖
引子眾所周知,Python 是一門重要的程式語言,廣泛的應用於數據科學、web開發、軟體工程、遊戲開發、自動化等領域。那麼學習 Python 最好的方法是什麼呢?其實這是很多初學者的困惑點,都是 Python 好學也好用,但是到底該怎麼學呢,下面我就分享一下我個人的一點心得!
在學習 Python 的時候,我發現最令人煩惱的事情就是所有學習資源都是差不多的,也就是通用性。比如我想學習如何使用 Python 創建網站,但似乎每一個學習資源都希望大家花上兩個漫長、枯燥的幾個月來學習 Python 語法,然後我才能考慮去做我真正感興趣、想要做的事情。這個漫長的過程,可能也是一個勸退的過程,對於一些自學能力差,或者意志力不夠堅定的人來說,半途而廢太容易了!
幾個慄子,比如下面的代碼
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the polls index.")
上面的代碼來自 Django 教程,Django 是一個非常流行的 Python 網站開發框架。有經驗的程序猿經常會向給初學者拋出上述代碼片段,然後說「很簡單!「。其實不然。
即使是幾行看似簡單的代碼也會讓初學者產生困惑,例如,為什麼有些行是縮進的?什麼是 django.http?為什麼有些東西在括號裡?當初學者不太了解 Python 的時候,理解所有內容是如何組合在一起就變得非常困難了。
那麼要理解上面的代碼,就需要了解 Python 語言 和 Django 的構建方式,上面的代碼片段創建了一個視圖,是使用 MVC 架構網站的關鍵構建塊之一。所以如果不知道如何編寫代碼來創建視圖,那麼就不可能創建動態網站。
所以要明白上面的架構,就需要首先懂得 Python 語法以及 Django 的相關知識,這其實都會佔用我們大量的時間、精力,那麼在我們進行真正的開發之前,可能要幾個月之後了。
這些往往會導致我們的學習興趣消退,甚至把整個計劃都取消了。
那麼該如何避免上面的學習梯度呢,這裡我總結了一些個人認為比較好的學習方法,僅供參考!
有效的方法是把學習基礎知識和構建有趣的東西結合起來,我們可以花儘可能少的時間學習基礎知識,然後立即投入到創造我們感興趣的東西當中去,這樣,可以極大的提高完成率哦!
Step 1 明確為什麼學習 Python在開始學習 Python 之前,我們有必要問問自己為什麼要學習 Python。因為學習 Python 這將是一個漫長的,會伴隨著痛苦的旅程。如果沒有足夠的動力,那麼很可能撐不過去。例如,我在大學的編程課上經常睡覺,雖然有必須要記住語法,知識點等,但是沒有十足的動力來支撐我。但是有的時候,當我需要用 Python 建立一個網站來自動評比論文時,我卻可以熬夜完成它,這就是動力的作用!
所以說,找出你的動機將幫助你找到一個最終目標,一條讓你不感到無聊的道路。在準備學習 Python 的時候,我們不必弄清楚所有的項目,只需要了解我們感興趣的一般領域即可。
選擇你感興趣的領域,例如:
數據科學/機器學習
行動應用程式
網站
遊戲
數據處理與分析
硬體/傳感器/機器人
自動化工作的腳本
首先就是找出一兩個你感興趣的領域,並願意堅持下去。然後再把學習中心慢慢的向他們傾斜,最終來完成自己想要的項目。
Step 2 學習基本語法沒有任何辦法,這一步不能跳過。在深入研究所選的領域之前,我們必須學習 Python 語法的基礎知識。沒錯我知道,很多人都希望在這方面花費少一些時間,最好能夠速成,這就仁者見仁智者見智了。當然我的觀點也是,儘可能少的把時間花費在基礎知識上,很多東西只需要在用到的時候再去學習即可。
以下是一些比較推薦的學習基礎知識的好資源:
· 學習Python的艱難之路--一本教授 Python 概念、從基礎到更深入程序的圖書
https://learnpythonthehardway.org/
· Python guide--Python 的官方教程
https://docs.python.org/3/tutorial/
這裡我還是要再強調下,我們應該在基本語法上花儘可能少的時間,畢竟我們是要使用 Python,而不是研究 Python。越快著手做項目,就學得越快。當什麼時候遇到困難時,我們再來解決相應的問題。理想的情況下,在這個階段差不多應該只花幾個星期,肯定不超過一個月。
注意:要學習 Python3 哦,Python2 就不要再花費力氣去學習了~
Step 3 學習已有的項目一旦我們學會了基本語法,那麼就可以開始自己做項目了。項目是一種很好的學習方式,因為它可以讓我們應用學習到的知識,這也是一個檢驗的過程。要知道,學到的知識一定要用起來,否則很快就忘記了。做項目將提升我們的編碼能力,也能開闊眼界,拓展思維等。
那麼為什麼我要推薦學習已有的項目呢,因為對於新手來說,從無到有的項目將帶來很多問題,不容易集中思維,項目寫著寫著就跑偏了。所以,最好我們還是根據已有的一些好的項目來做,一直到我們自己覺得自己已經完全可以從頭完成一個項目為止。許多學習資源都提供了很多不錯的項目,這些項目可以讓你在你關心的領域構建有趣的東西的同時還能防止你陷入困境。
讓我們來看看每個領域的一些好資源:
數據科學/機器學習· Dataquest--交互式地教授 Python 和數據科學。比如分析了一系列有趣的數據集,從中情局文件到 NBA 球員數據等等。最終可以構建複雜的算法,包括神經網絡和決策樹等
https://www.dataquest.io/
· Python for Data Analysis--一個非常好的介紹 Python 數據分析的教程
http://shop.oreilly.com/product/0636920023784.do
·Scikit-learn documentation-Scikit 是一個非常重要的 Python 第三方庫,進行數據分析和機器學習,基本離不開它
http://scikit-learn.org/stable/documentation.html
移動應用· Kivy-guide--Kivy 是一個可以讓你用 Python 製作行動應用程式的工具,這是它的官方文檔
http://kivy.org/docs/gettingstarted/intro.html
網站· Flask tutorial--Flask 是一個非常流行的 Python web 框架,這是它的入門教程
http://flask.pocoo.org/docs/1.0
· Bottle tutorial--Bottle 是 Python 的另一個 web 框架,可以從這裡開始學習
http://bottlepy.org/docs/dev/tutorial_app.html
· How To Tango With Django--Django是一個複雜的 Python Web 框架可以開發出功能強大的網站
http://www.tangowithdjango.com/
遊戲· Codecademy--帶你完成幾個簡單的遊戲
https://www.codecademy.com/
· Pygame教程--Pygame 是一個流行的用於製作遊戲的Python 庫,這是它的教程列表
http://www.pygame.org/wiki/tutorials
· 用Pygame製作遊戲--一本教你如何用 Python 製作遊戲的書
http://www.amazon.com/Making-Games-Python-Pygame-Sweigart/dp/1469901730
· 用Python發明你自己的電腦遊戲--同樣是這本指導你如何用 Python 製作遊戲的書籍
https://www.amazon.com/gp/product/1503212300
硬體/傳感器/機器人· Using Python with Arduino --學習如何使用 Python 控制連接到 Arduino 的傳感器
http://www.toptechboy.com/using-python-with-arduino-lessons/
· Learning Python with Raspberry Pi--使用 Python 和樹莓派構建硬體項目
https://www.raspberrypi.org/blog/learning-python-with-raspberry-pi/
· Learning Robotics using Python--學習如何使用 Python 構建機器人
https://www.amazon.com/dp/B00YEVZ6UK
· Raspberry Pi Cookbook -學習如何使用樹莓派和 python 建立機器人
https://www.amazon.com/Raspberry-Pi-Cookbook-Simon-Monk/dp/1449365221
自動化工作的腳本· Automate the boring stuff with Python -學習如何用 Python 自動化日常任務,所謂的 Python 自動化辦公
https://www.amazon.com/gp/product/1593275994
一旦你在自己的領域完成了一些已有項目的搭建,那麼你就應該能夠著手自己的項目了。但是,在此之前,花點時間學習如何解決問題也是非常重要的。
Step 4 完成自己的項目完成了一些已有項目的搭建之後,就應該自己動手做項目,繼續更好地學習 Python。此時我們仍然會參考相關資源和學習各種概念,但這個時候我們會顯得更加自由了。此時調試代碼和解決問題就成為了一個重點,下面的這些網站,都是程式設計師每日必逛的網站哦:
· StackOverflow--一個社區問答網站,大型程式設計師交友集中地
https://www.stackoverflow.com/
· 谷歌--能不能上的去,憑本事嘍
https://www.google.com/
· Python文檔--查找 Python 參考資料的好地方,還有什麼地方比官網更加權威呢
https://docs.python.org/3/
· 百度--不多說,有時還是蠻管用的
https://www.baidu.com
一旦你對調試問題有了比較好的方法和經驗之後,就可以開始自己的項目了。做一些自己感興趣的事情,我的地盤我做主。
下面是一些尋找有趣項目的技巧:
· 擴展以前處理的項目,並添加更多功能
· 加入一些 Python 社區,找一些從事有趣項目的人
· 找一些開源項目,看看能否貢獻一些代碼
· 找別人做過的項目,看看能不能擴展或調整,Github 要利用起來
· 瀏覽別人的博客文章,找一些靈感
· 日常工作生活中的一些小工具,可以提升效率的
記得從小處著手,從非常簡單的事情開始思考,這樣就可以獲得更多的信心。最好先開始一個小項目,然後完成一個大項目,而這個項目可以一直做下去,一直有優化的空間。
當然此時也可以結對編程,相互鼓勵,鞭策!
如果真的想不出什麼好的項目點子,可以參考下面的每個領域的一些點子:
數據科學/機器學習項目點子· 顯示各種數據的地圖
· 一種預測你居住地方的天氣的算法
· 預測股市的工具
· 自動總結新聞文章的算法
移動應用項目點子· 一個記錄每天行走步數的應用程式
· 每天發送天氣預報的程序
· 基於位置的實時聊天工具
網站項目點子· 一個幫助你計劃每周飲食的網站
· 遊戲視頻網站
· 在線記事本
Python遊戲項目點子· 基於地理位置,以佔領對方位置為取勝之道的遊戲項目
· 通過解決問題來通關的遊戲
硬體/傳感器/機器人項目點子· 傳感器項目,監測家裡的溫度
· 和鬧鐘結合,設計一個更加智能的鬧鐘
· 可以探測障礙物的機器人
工作自動化項目點子· 自動化數據輸入的腳本
· 自動從網上搜集數據的工具
說了這麼多,最關鍵是挑點東西做。如果我們過於執著於挑選一個完美的項目,那麼就有可能永遠都做不到,從而半途而廢。
Step 5 繼續更困難的項目不斷增加項目的難度和範圍,如果這個時候,你已經想不出該如何優化自己的項目了,那麼就是時候進行一個更加有挑戰的項目了。
這個時候就更加有意思了,我們可以再進一步做一些事情:
· 試著教一個新手如何運行你的項目
· 項目夠完美嗎,它能處理更多的數據,還是能處理更多的流量?
· 你能讓你的程序運行得更快嗎?
· 你能讓你的工具對更多的人有用嗎?
· 你將如何將你所做的商業化?
Python 是一門非常有趣且值得學習的語言,我認為任何人只要找到正確的動機和方法,都可以熟練的掌握 Python。
原文參考:https://www.dataquest.io/blog/learn-python-the-right-way/
說了這麼多,希望對你有所幫助哦!
還不給個「在看」嘛!!!!