干貨 | 2023 年如何一步一步的學(xué)習(xí) Python

想象一下,在我們得到真正想要的東西的時候,我們必須要攀上某些懸崖
引子
眾所周知,Python 是一門重要的編程語言,廣泛的應(yīng)用于數(shù)據(jù)科學(xué)、web開發(fā)、軟件工程、游戲開發(fā)、自動化等領(lǐng)域。那么學(xué)習(xí) Python 最好的方法是什么呢?其實這是很多初學(xué)者的困惑點,都是 Python 好學(xué)也好用,但是到底該怎么學(xué)呢,下面我就分享一下我個人的一點心得!
在學(xué)習(xí) Python 的時候,我發(fā)現(xiàn)最令人煩惱的事情就是所有學(xué)習(xí)資源都是差不多的,也就是通用性。比如我想學(xué)習(xí)如何使用 Python 創(chuàng)建網(wǎng)站,但似乎每一個學(xué)習(xí)資源都希望大家花上兩個漫長、枯燥的幾個月來學(xué)習(xí) Python 語法,然后我才能考慮去做我真正感興趣、想要做的事情。這個漫長的過程,可能也是一個勸退的過程,對于一些自學(xué)能力差,或者意志力不夠堅定的人來說,半途而廢太容易了!
幾個栗子,比如下面的代碼
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the polls index.")
上面的代碼來自 Django 教程,Django 是一個非常流行的 Python 網(wǎng)站開發(fā)框架。有經(jīng)驗的程序猿經(jīng)常會向給初學(xué)者拋出上述代碼片段,然后說“很簡單!“。其實不然。
即使是幾行看似簡單的代碼也會讓初學(xué)者產(chǎn)生困惑,例如,為什么有些行是縮進的?什么是 django.http?為什么有些東西在括號里?當(dāng)初學(xué)者不太了解 Python 的時候,理解所有內(nèi)容是如何組合在一起就變得非常困難了。
那么要理解上面的代碼,就需要了解 Python 語言 和 Django 的構(gòu)建方式,上面的代碼片段創(chuàng)建了一個視圖,是使用 MVC 架構(gòu)網(wǎng)站的關(guān)鍵構(gòu)建塊之一。所以如果不知道如何編寫代碼來創(chuàng)建視圖,那么就不可能創(chuàng)建動態(tài)網(wǎng)站。
所以要明白上面的架構(gòu),就需要首先懂得 Python 語法以及 Django 的相關(guān)知識,這其實都會占用我們大量的時間、精力,那么在我們進行真正的開發(fā)之前,可能要幾個月之后了。
這些往往會導(dǎo)致我們的學(xué)習(xí)興趣消退,甚至把整個計劃都取消了。
那么該如何避免上面的學(xué)習(xí)梯度呢,這里我總結(jié)了一些個人認為比較好的學(xué)習(xí)方法,僅供參考!
有效的方法是把學(xué)習(xí)基礎(chǔ)知識和構(gòu)建有趣的東西結(jié)合起來,我們可以花盡可能少的時間學(xué)習(xí)基礎(chǔ)知識,然后立即投入到創(chuàng)造我們感興趣的東西當(dāng)中去,這樣,可以極大的提高完成率哦!
Step 1 明確為什么學(xué)習(xí) Python
在開始學(xué)習(xí) Python 之前,我們有必要問問自己為什么要學(xué)習(xí) Python。因為學(xué)習(xí) Python 這將是一個漫長的,會伴隨著痛苦的旅程。如果沒有足夠的動力,那么很可能撐不過去。例如,我在大學(xué)的編程課上經(jīng)常睡覺,雖然有必須要記住語法,知識點等,但是沒有十足的動力來支撐我。但是有的時候,當(dāng)我需要用 Python 建立一個網(wǎng)站來自動評比論文時,我卻可以熬夜完成它,這就是動力的作用!
所以說,找出你的動機將幫助你找到一個最終目標(biāo),一條讓你不感到無聊的道路。在準(zhǔn)備學(xué)習(xí) Python 的時候,我們不必弄清楚所有的項目,只需要了解我們感興趣的一般領(lǐng)域即可。
選擇你感興趣的領(lǐng)域,例如:
數(shù)據(jù)科學(xué)/機器學(xué)習(xí)
移動應(yīng)用程序
網(wǎng)站
游戲
數(shù)據(jù)處理與分析
硬件/傳感器/機器人
自動化工作的腳本

首先就是找出一兩個你感興趣的領(lǐng)域,并愿意堅持下去。然后再把學(xué)習(xí)中心慢慢的向他們傾斜,最終來完成自己想要的項目。
Step 2 學(xué)習(xí)基本語法
沒有任何辦法,這一步不能跳過。在深入研究所選的領(lǐng)域之前,我們必須學(xué)習(xí) Python 語法的基礎(chǔ)知識。沒錯我知道,很多人都希望在這方面花費少一些時間,最好能夠速成,這就仁者見仁智者見智了。當(dāng)然我的觀點也是,盡可能少的把時間花費在基礎(chǔ)知識上,很多東西只需要在用到的時候再去學(xué)習(xí)即可。
以下是一些比較推薦的學(xué)習(xí)基礎(chǔ)知識的好資源:
· 學(xué)習(xí)Python的艱難之路--一本教授 Python 概念、從基礎(chǔ)到更深入程序的圖書
https://learnpythonthehardway.org/
· Python guide--Python 的官方教程
https://docs.python.org/3/tutorial/
這里我還是要再強調(diào)下,我們應(yīng)該在基本語法上花盡可能少的時間,畢竟我們是要使用 Python,而不是研究 Python。越快著手做項目,就學(xué)得越快。當(dāng)什么時候遇到困難時,我們再來解決相應(yīng)的問題。理想的情況下,在這個階段差不多應(yīng)該只花幾個星期,肯定不超過一個月。
注意:要學(xué)習(xí) Python3 哦,Python2 就不要再花費力氣去學(xué)習(xí)了~
Step 3 學(xué)習(xí)已有的項目
一旦我們學(xué)會了基本語法,那么就可以開始自己做項目了。項目是一種很好的學(xué)習(xí)方式,因為它可以讓我們應(yīng)用學(xué)習(xí)到的知識,這也是一個檢驗的過程。要知道,學(xué)到的知識一定要用起來,否則很快就忘記了。做項目將提升我們的編碼能力,也能開闊眼界,拓展思維等。
那么為什么我要推薦學(xué)習(xí)已有的項目呢,因為對于新手來說,從無到有的項目將帶來很多問題,不容易集中思維,項目寫著寫著就跑偏了。所以,最好我們還是根據(jù)已有的一些好的項目來做,一直到我們自己覺得自己已經(jīng)完全可以從頭完成一個項目為止。許多學(xué)習(xí)資源都提供了很多不錯的項目,這些項目可以讓你在你關(guān)心的領(lǐng)域構(gòu)建有趣的東西的同時還能防止你陷入困境。
讓我們來看看每個領(lǐng)域的一些好資源:
數(shù)據(jù)科學(xué)/機器學(xué)習(xí)
· Dataquest--交互式地教授 Python 和數(shù)據(jù)科學(xué)。比如分析了一系列有趣的數(shù)據(jù)集,從中情局文件到 NBA 球員數(shù)據(jù)等等。最終可以構(gòu)建復(fù)雜的算法,包括神經(jīng)網(wǎng)絡(luò)和決策樹等
https://www.dataquest.io/
· Python for Data Analysis--一個非常好的介紹 Python 數(shù)據(jù)分析的教程
http://shop.oreilly.com/product/0636920023784.do
·Scikit-learn documentation-Scikit 是一個非常重要的 Python 第三方庫,進行數(shù)據(jù)分析和機器學(xué)習(xí),基本離不開它
http://scikit-learn.org/stable/documentation.html
移動應(yīng)用
· Kivy-guide--Kivy 是一個可以讓你用 Python 制作移動應(yīng)用程序的工具,這是它的官方文檔
http://kivy.org/docs/gettingstarted/intro.html
網(wǎng)站
· Flask tutorial--Flask 是一個非常流行的 Python web 框架,這是它的入門教程
http://flask.pocoo.org/docs/1.0
· Bottle tutorial--Bottle 是 Python 的另一個 web 框架,可以從這里開始學(xué)習(xí)
http://bottlepy.org/docs/dev/tutorial_app.html
· How To Tango With Django--Django是一個復(fù)雜的 Python Web 框架可以開發(fā)出功能強大的網(wǎng)站
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發(fā)明你自己的電腦游戲--同樣是這本指導(dǎo)你如何用 Python 制作游戲的書籍
https://www.amazon.com/gp/product/1503212300
硬件/傳感器/機器人
· Using Python with Arduino --學(xué)習(xí)如何使用 Python 控制連接到 Arduino 的傳感器
http://www.toptechboy.com/using-python-with-arduino-lessons/
· Learning Python with Raspberry Pi--使用 Python 和樹莓派構(gòu)建硬件項目
https://www.raspberrypi.org/blog/learning-python-with-raspberry-pi/
· Learning Robotics using Python--學(xué)習(xí)如何使用 Python 構(gòu)建機器人
https://www.amazon.com/dp/B00YEVZ6UK
· Raspberry Pi Cookbook -學(xué)習(xí)如何使用樹莓派和 python 建立機器人
https://www.amazon.com/Raspberry-Pi-Cookbook-Simon-Monk/dp/1449365221
自動化工作的腳本
· Automate the boring stuff with Python -學(xué)習(xí)如何用 Python 自動化日常任務(wù),所謂的 Python 自動化辦公
https://www.amazon.com/gp/product/1593275994
一旦你在自己的領(lǐng)域完成了一些已有項目的搭建,那么你就應(yīng)該能夠著手自己的項目了。但是,在此之前,花點時間學(xué)習(xí)如何解決問題也是非常重要的。
Step 4 完成自己的項目
完成了一些已有項目的搭建之后,就應(yīng)該自己動手做項目,繼續(xù)更好地學(xué)習(xí) Python。此時我們?nèi)匀粫⒖枷嚓P(guān)資源和學(xué)習(xí)各種概念,但這個時候我們會顯得更加自由了。此時調(diào)試代碼和解決問題就成為了一個重點,下面的這些網(wǎng)站,都是程序員每日必逛的網(wǎng)站哦:
· StackOverflow--一個社區(qū)問答網(wǎng)站,大型程序員交友集中地
https://www.stackoverflow.com/
· 谷歌--能不能上的去,憑本事嘍
https://www.google.com/
· Python文檔--查找 Python 參考資料的好地方,還有什么地方比官網(wǎng)更加權(quán)威呢
https://docs.python.org/3/
· 百度--不多說,有時還是蠻管用的
https://www.baidu.com
一旦你對調(diào)試問題有了比較好的方法和經(jīng)驗之后,就可以開始自己的項目了。做一些自己感興趣的事情,我的地盤我做主。
下面是一些尋找有趣項目的技巧:
· 擴展以前處理的項目,并添加更多功能
· 加入一些 Python 社區(qū),找一些從事有趣項目的人
· 找一些開源項目,看看能否貢獻一些代碼
· 找別人做過的項目,看看能不能擴展或調(diào)整,Github 要利用起來
· 瀏覽別人的博客文章,找一些靈感
· 日常工作生活中的一些小工具,可以提升效率的
記得從小處著手,從非常簡單的事情開始思考,這樣就可以獲得更多的信心。最好先開始一個小項目,然后完成一個大項目,而這個項目可以一直做下去,一直有優(yōu)化的空間。
當(dāng)然此時也可以結(jié)對編程,相互鼓勵,鞭策!
如果真的想不出什么好的項目點子,可以參考下面的每個領(lǐng)域的一些點子:
數(shù)據(jù)科學(xué)/機器學(xué)習(xí)項目點子
· 顯示各種數(shù)據(jù)的地圖
· 一種預(yù)測你居住地方的天氣的算法
· 預(yù)測股市的工具
· 自動總結(jié)新聞文章的算法
移動應(yīng)用項目點子
· 一個記錄每天行走步數(shù)的應(yīng)用程序
· 每天發(fā)送天氣預(yù)報的程序
· 基于位置的實時聊天工具
網(wǎng)站項目點子
· 一個幫助你計劃每周飲食的網(wǎng)站
· 游戲視頻網(wǎng)站
· 在線記事本
Python游戲項目點子
· 基于地理位置,以占領(lǐng)對方位置為取勝之道的游戲項目
· 通過解決問題來通關(guān)的游戲
硬件/傳感器/機器人項目點子
· 傳感器項目,監(jiān)測家里的溫度
· 和鬧鐘結(jié)合,設(shè)計一個更加智能的鬧鐘
· 可以探測障礙物的機器人
工作自動化項目點子
· 自動化數(shù)據(jù)輸入的腳本
· 自動從網(wǎng)上搜集數(shù)據(jù)的工具
說了這么多,最關(guān)鍵是挑點東西做。如果我們過于執(zhí)著于挑選一個完美的項目,那么就有可能永遠都做不到,從而半途而廢。
Step 5 繼續(xù)更困難的項目
不斷增加項目的難度和范圍,如果這個時候,你已經(jīng)想不出該如何優(yōu)化自己的項目了,那么就是時候進行一個更加有挑戰(zhàn)的項目了。
這個時候就更加有意思了,我們可以再進一步做一些事情:
· 試著教一個新手如何運行你的項目
· 項目夠完美嗎,它能處理更多的數(shù)據(jù),還是能處理更多的流量?
· 你能讓你的程序運行得更快嗎?
· 你能讓你的工具對更多的人有用嗎?
· 你將如何將你所做的商業(yè)化?
Python 是一門非常有趣且值得學(xué)習(xí)的語言,我認為任何人只要找到正確的動機和方法,都可以熟練的掌握 Python。
原文參考:https://www.dataquest.io/blog/learn-python-the-right-way/
說了這么多,希望對你有所幫助哦!
點擊關(guān)注公眾號,閱讀更多精彩內(nèi)容

