AI 學習之路——輕鬆初探 Python 篇(一)

WeaponZhi發表於2017-11-14

喜歡小之的文章的可以關注公眾號「WeaponZhi」持續關注動態

AI 學習之路——輕鬆初探 Python 篇(一)

這是「AI 學習之路」的第 1 篇,「Python 學習」的第 1 篇

前言

1. Python 篇的組織結構

不管是學習人工智慧還是大資料,Python 都是基本必學的,而且如果大家自己有一定的語言基礎,會發現 Python 是非常好入門的,我自己大概花了 1 個下午入門了一下基本的語法。

我會花 3 到 4 篇的篇幅給大家作一下基本的入門。當然,這不是說我們學習人工智慧或者大資料,對 Python 的瞭解程度到這麼多就夠了,也不是說我在整個人工智慧系列的寫作過程中,只會寫這幾篇 Python 的文章。相反,我十分重視 Python 語言本身的學習,我也會分享很多 Python 相關的原創。

對 Python 掌握的越熟練,必然會對後面學習人工智慧或者大資料這樣的熱門技術越有幫助,不僅如此,工作中的很多場景,Python 都可以很好的解決,極大的提升我們的工作效率,即使我工作中的主語言並不是 Python。大家學習 Python 的過程中,一定會對此有所感受的。

所以,Python 的文章會和別的文章有所穿插,今天我釋出一篇演算法相關的,明天可能就推一篇 Python 的了,我的承諾就是,所有文章都會劃分好類別,並且有連貫性,即使比較晚關注的讀者,也可以循序漸進的進行學習。

2. 如何自主學習 Python

現在的網路資源很豐富,Python 的資料更是層出不窮。想入門 Python 的話,這裡推薦給大家兩個渠道:

第一個就是推薦大家去看一下**「廖雪峰的 Python 教程」**,強烈推薦,我就是一個下午看的他的教程進行學習的。

第二個是**「Codecademy」**這個網站,這個網站上面有很多語言的入門教程,它是一種引導式的教學方式,不僅有文件,而且可以線上的進行編譯和執行,可以說是手把手了,質量很高。不過有一點尷尬的是,可能大部分的教程是英文,不過好在教程本身不復雜,摳一摳還是能看懂的,它的介面是這樣的:

AI 學習之路——輕鬆初探 Python 篇(一)

當然啦,通過看我的文章來入門也是完全可以的。

還是那句話,Python 肯定不是說入了門就夠了,深度的研究大家可以多買書,看看部落格,多寫寫。當然,我也會作 Python 中高階技術的分享的。最重要的是堅持,可能很多人都和我差不多,工作或者學習的主力語言並不是 Python,需要在業餘時間來學習,這很考驗一個人的意志力,想做的突出,就得忍受寂寞。

沒關係,至少還有我和你一起擼碼。

Python 簡介

1. Python 的優勢

Python 是一種非常高階的語言,實現同樣的邏輯,C 語言和 Java 可能要用比 Python 多數倍甚至幾十倍的程式碼才能完成。Python 簡單優雅,儘量寫容易看明白的程式碼,儘量寫少的程式碼。

我們可以類比 Java 和 C 語言的這種差異。C 語言,在構建實體物件的時候,需要用程式碼手動的去在記憶體開闢空間,然後把開闢好的這段空間賦予某個物件使用,使用完了,還得手動去把這部分空間給釋放掉,好處是對記憶體或者是一些硬體的把控力很強,而且強制要求程式設計師去嚴格的監管這些資源的使用,但不用多說,這樣太麻煩了,我為了寫一個業務邏輯,竟然要寫這麼多和業務無關的程式碼。

而 Java 就省事多了,JVM 的垃圾回收機制都幫你做好了這些事,它會通過諸如可達性演算法這樣的方式,自動的標記出哪些記憶體空間是可回收的,然後在你程式碼沒有任何體現的情況下進行記憶體的回收。當然,缺點也顯而易見,你根本不知道垃圾回收機制到底幹了什麼,它的擴充性和可控性就不是那麼出色了,如果你需要特別的關注回收上的事,會發現特別麻煩和不可控。

Python 相比 Java,當然也少操心了很多事,比如非同步上的事,Java 處理起來就麻煩多了。Python 因為提供了非常完善的基礎程式碼庫,輪子非常完備,所以幾乎可以覆蓋你能想到的應用範圍。

值得一提的是,Python 近年來發展迅猛,人工智慧、大資料等最前沿熱門的技術,Python 都能很好的支援和應用。GitHub 2017 年釋出的開發語言活躍度排名上,Python 第一次超過了 Java,躍升到第二名,僅次於 JS。

2. Python 的劣勢

有得有失,Python 也不是完美的。廖大總結的挺好,我簡單的概述下。

首先 Python 的執行速度是比較慢的,因為 Python 是一種解釋型語言,Python 程式碼在執行的時候,會一行一行的把程式碼翻譯成計算機可以理解的機器碼,可以想像這個過程是很慢的。而 C 語言在執行之前就已經把程式碼編譯成機器碼了,執行過程就會特別快。

但實際上這個速度差距,並不是不可以接受的,廖大大也在他文中做了一個很有意思的比喻,這裡引用下,大家自行體會這種速度差距的影響:

大量的應用程式不需要這麼快的執行速度,因為使用者根本感覺不出來。例如開發一個下載MP3的網路應用程式,C 程式的執行時間需要 0.001 秒,而Python程式的執行時間需要 0.1 秒,慢了 100 倍,但由於網路更慢,需要等待1秒,你想,使用者能感覺到 1.001 秒和 1.1 秒的區別嗎?這就好比 F1 賽車和普通的計程車在北京三環路上行駛的道理一樣,雖然 F1 賽車理論時速高達 400 公里,但由於三環路堵車的時速只有 20 公里,因此,作為乘客,你感覺的時速永遠是 20 公里。

還有一個缺點,就是 Python 是不能加密的,如果你的應用是 Python 寫的,當你釋出的時候,等於說就是公開了自己的原始碼。不過在網際網路時代,靠賣軟體來生存的商業模式越來越少了,更多的是靠服務和網站,不僅如此,在這個提倡開源精神的時代,原始碼開源本身並不是很可怕,也不要過分高估自己程式碼的價值。

Python 執行需要一個編輯器來將 Python 程式碼轉化為特定的作業系統可理解的程式碼。它不像 Java,任何可以執行 Java 虛擬機器的裝置都可以執行 Java 的應用。

安裝 Python

OK,說十句話不如做一件事,那我們現在就行動起來開始安裝 Python 吧。

Python 3.x 和 2.x 是不相容的,我們作為初學者,自然就不用考慮一些歷史因素了,直接上 3.x。這裡我就不花費篇幅去展開介紹安裝過程了,網上很多教程,需要注意的主要是 Windows 小夥伴們一定要記得配置好環境變數。

Python 檔案是需要直譯器去執行的。安裝好 Python 後,我們實際上就已經獲得了一個官方的直譯器:CPython,它是使用最廣泛的 Python 直譯器。還有很多其他的直譯器。比如 PyPy,它相比 CPython 提升了速度;Jython 和 IronPython 則是在其他平臺上的直譯器,可以把 Python 程式碼編譯成 Java 或者 .Net 位元組碼。

一切準備就緒,在 Windows 控制檯中輸入 python 並回車,或者在 Mac 和 Linux 的終端中輸入 python3 如果出現這個介面,說明你安裝成功了!

按照慣例,我們是不是得 Hello, world 一下? 在 >>> 後輸入程式碼吧!

>>> print ('hello, world')
hello, world
複製程式碼

歡迎關注我的公眾號

AI 學習之路——輕鬆初探 Python 篇(一)

寫在開篇第一天,我想和你做朋友

相關文章