很久沒寫文了。最近在搞一些好玩的技術用到了 Python 。我原覺得要花些時日,誰知道第一天入門以後便沒有再刻意地去學習它了。這裏就寫寫其中的一些關鍵點吧。若是我去學一門語言不是由於它火了而是我用到它了。曾經閒着沒事幹的時候把 Kotlin 、Vue、React 學了,可是歷來沒有實踐中用到它們,以致於如今幾乎快要忘了。因此這是個慘痛的教訓:有可能用不到的東西不要去學。有這個時間泡妞打遊戲它不香嗎?java
"玩蛇"其實我是拒絕的,我要搞個爬蟲以及數據清洗,包括機器學習的一些東西。而這些方面 Python 具備先天性優點,因此 Python 成了不二的選擇。從這裏你須要知道當你要去學一個新技術時,你要知道它的優點是什麼,它的場景是什麼。有很多人去報個班學 Python ,當你問他爲何學 Python 的時候,他告訴你由於它火啊。這種是沒有前途的。python
這一篇是結合我我的的經歷寫的,因此想快速入門首先你要有編程的經歷,掌握其它任何一門語言的前提下,有必定的學習能力,Python 對你來講是幾乎沒有難度的語言。數據庫
Python 大部分人學習和使用直接去官方下對應的環境包安裝就好了,固然這個也能夠。事實上若是用的多了後面會涉及環境的問題。這裏建議直接使用 Anacoda3 。這個能夠看做 Python 中的 Maven 或者 Gradle 。未來你會遇到有得項目依賴 Python2 有的依賴 Python3 的問題,Anacoda3能夠幫助你解決特定的環境管理問題。編程
這個是 Python 比較特點的一個地方。它不使用大括號 {}
來控制類,函數以及其餘邏輯判斷的層次。若是是 Java
你會這麼寫:機器學習
public void test(String str){
if(str!=null){
System.out.println("str ="+ str);
}else{
System.out.println("str is null");
}
}
複製代碼
用 Python 就這麼寫了:函數
def test(str):
if str:
print('str')
else:
print('None')
複製代碼
從這裏能夠看出來 Python 把能省的都省了,連變量類型,返回值類型都不要了。做爲面向對象的語言來講這有點」不嚴謹「 ,可是做爲腳本語言來講這就很是受用了。寫這一篇文章的時候恰好須要修改個證件照的大小,Python 隨手就處理了:性能
file_dir = './2.jpg'
with Image.open(file_dir) as img:
x, y = img.size
x_s = 650
y_s = y * x_s / x
out = img.resize((int(x_s), int(y_s)), Image.ANTIALIAS)
out.save('./3.jpg')
複製代碼
在你掌握一門其它語言的前提下學習 Python 是很容易的。因此基本語法幾乎是一遍過。高級特性建議邊用邊學,不用再這個上面浪費時間。學習任何一門語言都是多練多寫。就像神槍手都是子彈喂出來同樣,一名出色的 Coder 都須要代碼量達到必定的量級。學習
我以爲惟一的比較花時間的就是切片(slice
)。切片就是按照範圍取 list
或者 tuple
中的值。很是靈活,切片不但有正序也有逆序。這也是 Python 擅長處理數據的重要緣由之一。這裏要花大量的時間取練習和理解操做數據。機器學習,科學實驗,數據分析都用獲得。人工智能
建議直接自定一個小需求開始學,遇到問題就去解決問題。而後着重練習並理解本身遇到的問題的技術解決途徑。我寫完 HelloWorld 就沒有去循序漸進了。 找了個爬蟲腳本去嘗試爬東西。而且去理解裏面的一些寫法,而後把本身的一些想法實現進去。練習數據處理能夠去連一個數據庫,進行各類數據的聚合操做。學新東西你每每不知道什麼對你有最直觀的提升,只有需求才能讓你找到短板、看清方向。不要糾結於某些你不知道用途的語言特性。spa
」玩蛇「 就是玩調包!一名出色的 Python Coder 都是調包俠!Python 有很是豐富的類庫讓你去實現各類想法。因此用 Python 不要遇到場景就想着造輪子,先去找找有沒有輪子。這裏有幾個經常使用的輪子你能夠在學習的時候就能用起來:
還有很是多,不過上面的幾個在某些領域很是強大,玩的好能當飯吃。
Python 做爲第二語言很是不錯,並且上手很是快。平時處理點數據很順手,玩起來很爽。若是想搞一些人工智能的東西,須要的門檻就高些,數學、統計、機率、英語、建模一個都不能少。因此若是要吃 Python 這碗飯仍是要看清楚本身的能力的。單單會 Python 並不讓你具有優點,更不值得去報班學習,由於學 Python 沒有難度。