AI 学习之路——轻松初探 Python 篇(一)
喜歡小之的文章的可以關(guān)注公眾號「WeaponZhi」持續(xù)關(guān)注動態(tài)
這是「AI 學(xué)習(xí)之路」的第 1 篇,「Python 學(xué)習(xí)」的第 1 篇
前言
1. Python 篇的組織結(jié)構(gòu)
不管是學(xué)習(xí)人工智能還是大數(shù)據(jù),Python 都是基本必學(xué)的,而且如果大家自己有一定的語言基礎(chǔ),會發(fā)現(xiàn) Python 是非常好入門的,我自己大概花了 1 個下午入門了一下基本的語法。
我會花 3 到 4 篇的篇幅給大家作一下基本的入門。當(dāng)然,這不是說我們學(xué)習(xí)人工智能或者大數(shù)據(jù),對 Python 的了解程度到這么多就夠了,也不是說我在整個人工智能系列的寫作過程中,只會寫這幾篇 Python 的文章。相反,我十分重視 Python 語言本身的學(xué)習(xí),我也會分享很多 Python 相關(guān)的原創(chuàng)。
對 Python 掌握的越熟練,必然會對后面學(xué)習(xí)人工智能或者大數(shù)據(jù)這樣的熱門技術(shù)越有幫助,不僅如此,工作中的很多場景,Python 都可以很好的解決,極大的提升我們的工作效率,即使我工作中的主語言并不是 Python。大家學(xué)習(xí) Python 的過程中,一定會對此有所感受的。
所以,Python 的文章會和別的文章有所穿插,今天我發(fā)布一篇算法相關(guān)的,明天可能就推一篇 Python 的了,我的承諾就是,所有文章都會劃分好類別,并且有連貫性,即使比較晚關(guān)注的讀者,也可以循序漸進的進行學(xué)習(xí)。
2. 如何自主學(xué)習(xí) Python
現(xiàn)在的網(wǎng)絡(luò)資源很豐富,Python 的資料更是層出不窮。想入門 Python 的話,這里推薦給大家兩個渠道:
第一個就是推薦大家去看一下**「廖雪峰的 Python 教程」**,強烈推薦,我就是一個下午看的他的教程進行學(xué)習(xí)的。
第二個是**「Codecademy」**這個網(wǎng)站,這個網(wǎng)站上面有很多語言的入門教程,它是一種引導(dǎo)式的教學(xué)方式,不僅有文檔,而且可以在線的進行編譯和運行,可以說是手把手了,質(zhì)量很高。不過有一點尷尬的是,可能大部分的教程是英文,不過好在教程本身不復(fù)雜,摳一摳還是能看懂的,它的界面是這樣的:
當(dāng)然啦,通過看我的文章來入門也是完全可以的。
還是那句話,Python 肯定不是說入了門就夠了,深度的研究大家可以多買書,看看博客,多寫寫。當(dāng)然,我也會作 Python 中高級技術(shù)的分享的。最重要的是堅持,可能很多人都和我差不多,工作或者學(xué)習(xí)的主力語言并不是 Python,需要在業(yè)余時間來學(xué)習(xí),這很考驗一個人的意志力,想做的突出,就得忍受寂寞。
沒關(guān)系,至少還有我和你一起擼碼。
Python 簡介
1. Python 的優(yōu)勢
Python 是一種非常高級的語言,實現(xiàn)同樣的邏輯,C 語言和 Java 可能要用比 Python 多數(shù)倍甚至幾十倍的代碼才能完成。Python 簡單優(yōu)雅,盡量寫容易看明白的代碼,盡量寫少的代碼。
我們可以類比 Java 和 C 語言的這種差異。C 語言,在構(gòu)建實體對象的時候,需要用代碼手動的去在內(nèi)存開辟空間,然后把開辟好的這段空間賦予某個對象使用,使用完了,還得手動去把這部分空間給釋放掉,好處是對內(nèi)存或者是一些硬件的把控力很強,而且強制要求程序員去嚴格的監(jiān)管這些資源的使用,但不用多說,這樣太麻煩了,我為了寫一個業(yè)務(wù)邏輯,竟然要寫這么多和業(yè)務(wù)無關(guān)的代碼。
而 Java 就省事多了,JVM 的垃圾回收機制都幫你做好了這些事,它會通過諸如可達性算法這樣的方式,自動的標(biāo)記出哪些內(nèi)存空間是可回收的,然后在你代碼沒有任何體現(xiàn)的情況下進行內(nèi)存的回收。當(dāng)然,缺點也顯而易見,你根本不知道垃圾回收機制到底干了什么,它的拓展性和可控性就不是那么出色了,如果你需要特別的關(guān)注回收上的事,會發(fā)現(xiàn)特別麻煩和不可控。
Python 相比 Java,當(dāng)然也少操心了很多事,比如異步上的事,Java 處理起來就麻煩多了。Python 因為提供了非常完善的基礎(chǔ)代碼庫,輪子非常完備,所以幾乎可以覆蓋你能想到的應(yīng)用范圍。
值得一提的是,Python 近年來發(fā)展迅猛,人工智能、大數(shù)據(jù)等最前沿?zé)衢T的技術(shù),Python 都能很好的支持和應(yīng)用。GitHub 2017 年發(fā)布的開發(fā)語言活躍度排名上,Python 第一次超過了 Java,躍升到第二名,僅次于 JS。
2. Python 的劣勢
有得有失,Python 也不是完美的。廖大總結(jié)的挺好,我簡單的概述下。
首先 Python 的運行速度是比較慢的,因為 Python 是一種解釋型語言,Python 代碼在運行的時候,會一行一行的把代碼翻譯成計算機可以理解的機器碼,可以想像這個過程是很慢的。而 C 語言在運行之前就已經(jīng)把代碼編譯成機器碼了,執(zhí)行過程就會特別快。
但實際上這個速度差距,并不是不可以接受的,廖大大也在他文中做了一個很有意思的比喻,這里引用下,大家自行體會這種速度差距的影響:
大量的應(yīng)用程序不需要這么快的運行速度,因為用戶根本感覺不出來。例如開發(fā)一個下載MP3的網(wǎng)絡(luò)應(yīng)用程序,C 程序的運行時間需要 0.001 秒,而Python程序的運行時間需要 0.1 秒,慢了 100 倍,但由于網(wǎng)絡(luò)更慢,需要等待1秒,你想,用戶能感覺到 1.001 秒和 1.1 秒的區(qū)別嗎?這就好比 F1 賽車和普通的出租車在北京三環(huán)路上行駛的道理一樣,雖然 F1 賽車理論時速高達 400 公里,但由于三環(huán)路堵車的時速只有 20 公里,因此,作為乘客,你感覺的時速永遠是 20 公里。
還有一個缺點,就是 Python 是不能加密的,如果你的應(yīng)用是 Python 寫的,當(dāng)你發(fā)布的時候,等于說就是公開了自己的源代碼。不過在互聯(lián)網(wǎng)時代,靠賣軟件來生存的商業(yè)模式越來越少了,更多的是靠服務(wù)和網(wǎng)站,不僅如此,在這個提倡開源精神的時代,源代碼開源本身并不是很可怕,也不要過分高估自己代碼的價值。
Python 運行需要一個編輯器來將 Python 代碼轉(zhuǎn)化為特定的操作系統(tǒng)可理解的代碼。它不像 Java,任何可以運行 Java 虛擬機的設(shè)備都可以運行 Java 的應(yīng)用。
安裝 Python
OK,說十句話不如做一件事,那我們現(xiàn)在就行動起來開始安裝 Python 吧。
Python 3.x 和 2.x 是不兼容的,我們作為初學(xué)者,自然就不用考慮一些歷史因素了,直接上 3.x。這里我就不花費篇幅去展開介紹安裝過程了,網(wǎng)上很多教程,需要注意的主要是 Windows 小伙伴們一定要記得配置好環(huán)境變量。
Python 文件是需要解釋器去執(zhí)行的。安裝好 Python 后,我們實際上就已經(jīng)獲得了一個官方的解釋器:CPython,它是使用最廣泛的 Python 解釋器。還有很多其他的解釋器。比如 PyPy,它相比 CPython 提升了速度;Jython 和 IronPython 則是在其他平臺上的解釋器,可以把 Python 代碼編譯成 Java 或者 .Net 字節(jié)碼。
一切準備就緒,在 Windows 控制臺中輸入 python 并回車,或者在 Mac 和 Linux 的終端中輸入 python3 如果出現(xiàn)這個界面,說明你安裝成功了!
按照慣例,我們是不是得 Hello, world 一下? 在 >>> 后輸入代碼吧!
print ('hello, world') hello, world 復(fù)制代碼歡迎關(guān)注我的公眾號
寫在開篇第一天,我想和你做朋友
總結(jié)
以上是生活随笔為你收集整理的AI 学习之路——轻松初探 Python 篇(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JAVA并发-为现有的线程安全类添加原子
- 下一篇: linux中yum命令详解