Python基礎(chǔ)手冊 1 —— Python語言介紹

python-logo.png

Python 是一門優(yōu)雅而健壯的編程語言,它繼承了傳統(tǒng)編譯語言的強大性和通用性,同時也借鑒了腳本語言和解釋語言的簡單性和易用性。


一、Python 的歷史

Python是由創(chuàng)始人貴鐸·范·羅薩姆(Guido van Rossum)在阿姆斯特丹于1989年圣誕節(jié)期間,為了打發(fā)圣誕節(jié)的無趣,開發(fā)的一個新的解釋型腳本語言。之所以選中Python(大蟒蛇的意思)作為該編程語言的名字,是因為他是BBC當(dāng)時正在熱播的喜劇連續(xù)劇“Monty Python”的愛好者。

Guido van Rossum.jpg

Python的第一個公開發(fā)行版發(fā)行于1991年,它是純粹的自由軟件, 源代碼和解釋器(CPython)都遵循 GPL(GNU General Public License)協(xié)議。


二、Python 的設(shè)計思想

Python被設(shè)計成是 “符合大腦思維習(xí)慣” 的,采用極簡主義的設(shè)計理念,加以統(tǒng)一規(guī)范的交互模式。這使得Python易于學(xué)習(xí)、理解和記憶。Python 開發(fā)者的哲學(xué)是 “用一種方法,最好是只有一種方法來做一件事”。

Python是完全面向?qū)ο蟮木幊陶Z言,函數(shù)、模塊、數(shù)字、字符串等內(nèi)置類型都是對象。它的類支持多態(tài)、操作符重載、和多重繼承等高級OOP概念,并且Python特有的簡潔的語法和類型使得OOP十分易于使用。當(dāng)然OOP只是Python的一個選擇而已,就像C++一樣,Python既支持面向?qū)ο缶幊?,也支持面向過程編程的模式。

Python是一種解釋型語言,目前Python的標(biāo)準(zhǔn)實現(xiàn)方式是將源代碼的語句編譯(轉(zhuǎn)換)為字節(jié)碼格式,然后通過解釋器將字節(jié)碼解釋出來。Python沒有將代碼編譯成底層的二進(jìn)制代碼,所以相較于C和C++等編譯型語言,Python的執(zhí)行速度會慢一些。但是Python的解釋型語言特性提高了開發(fā)者開發(fā)速度,同時使它擁有解釋型語言易于編寫和調(diào)試等優(yōu)點。

Python本身被設(shè)計為可擴(kuò)展的,并非所有的特性和功能都集成到語言核心。Python提供了豐富的API和工具,以便程序員能夠輕松地使用C/C++語言來編寫擴(kuò)充模塊。Python為我們提供了非常完善的基礎(chǔ)代碼庫,覆蓋了正則表達(dá)式、網(wǎng)絡(luò)、多線程、GUI、數(shù)據(jù)庫、等領(lǐng)域。除了內(nèi)置的庫外,Python還有大量的第三方庫,供你直接使用。

Python編譯器本身也可以被集成到其它需要腳本語言的程序內(nèi),因此,很多人還把Python作為一種“膠水語言”(glue language)使用,使用Python將其他語言編寫的程序進(jìn)行集成和封裝。2004 年,Python 已在Google 內(nèi)部使用。Google Engine使用C++編寫性能要求極高的部分,然后用Python或Java/Go調(diào)用相應(yīng)的模塊。他們的目的是 “Python where we can, C++ where we must",在操控硬件的場合使用 C++,在快速開發(fā)時候使用 Python。

注:我們在任意一個Python的交互解釋器中輸入:import this 命令,就可以看到Python的設(shè)計原則。EIBTI就是 “明了勝于晦澀” 的簡寫。

clipboard.png



三、Python 的優(yōu)點

1、軟件質(zhì)量高

Python秉承了簡潔、清晰的語法,以及高度一致的編程模式。始終如一的設(shè)計風(fēng)格,可以保證開發(fā)出相當(dāng)規(guī)范的代碼。

針對錯誤,Python 提供了“安全合理”的退出機制。Python支持異常處理,能有效捕獲和處理程序運行時發(fā)生的錯誤,使你能夠監(jiān)控這些錯誤并進(jìn)行處理。
Python代碼能打包成模塊和包,方便管理和發(fā)布,很適合團(tuán)隊協(xié)同開發(fā)。

2、開發(fā)速度快

Python致力于開發(fā)速度的最優(yōu)化:簡潔的語法、動態(tài)的類型、無需編譯、豐富的庫支持等特性使得程序員可以快速的進(jìn)行項目開發(fā)。Python往往只要幾十行代碼就可以開發(fā)出需要幾百行C代碼的功能。

Python解析器能很方便地進(jìn)行代碼調(diào)試和測試,也可作為一個編程接口嵌入一個應(yīng)用程序中。 這就使的在開發(fā)過程中可以直接進(jìn)行調(diào)試,而避免了耗時而又麻煩的編譯過程,大大提高了開發(fā)的速度和效率。

在Python 中,由于內(nèi)存管理是由Python 解釋器負(fù)責(zé)的,所以開發(fā)人員就可以從內(nèi)存管理事務(wù)中解放出來,僅僅致力于開發(fā)計劃中首要的應(yīng)用程序設(shè)計。這使得Python編寫的程序錯誤更少、更加健壯、開發(fā)周期更短。

3、功能強大

Python的功能足夠強大,本身也足夠強壯, 它還有許多面向其他系統(tǒng)的接口,所以完全可以使用 Python 開發(fā)整個系統(tǒng)的原型。

為了完成更多特定的任務(wù),Python內(nèi)置了許多預(yù)編碼的庫工具,從正則表達(dá)式到網(wǎng)絡(luò)編程,再到數(shù)據(jù)庫編程都支持。在web領(lǐng)域、數(shù)據(jù)分析領(lǐng)域等,Python還有強大的框架幫你快速開發(fā)你的服務(wù)。例如:Django、TruboGears、Pylons等。

4、易于擴(kuò)展

Python易于擴(kuò)展,(對于CPython)可以通過C或C++編寫的模塊進(jìn)行功能擴(kuò)展,使其能夠成為一種靈活的黏合語言,可以腳本化處理其他系統(tǒng)和組件的行為。

5、跨平臺

Python是跨平臺的。在各種不同的操作系統(tǒng)上(Linux、windows、MacOS、Unix等)都可以看到Python 的身影。因為Python 是用C 寫的,又由于C 的可移植性,使得Python 可以運行在任何帶有ANSI C 編譯器的平臺上。盡管有一些針對不同平臺開發(fā)的特有模塊,但是在任何一個平臺上用Python 開發(fā)的通用軟件都可以稍事修改或者原封不動的在其他平臺上運行。這種可移植性既適用于不同的架構(gòu),也適用于不同的操作系統(tǒng)。


四、Python 的缺點

第一個缺點就是運行速度慢。和C/C++程序相比Python的運行速度非常慢,因為Python是解釋型語言,你的代碼在執(zhí)行時會一行一行地翻譯成CPU能理解的機器碼,這個翻譯過程非常耗時,所以很慢。而C程序是運行前直接編譯成CPU能執(zhí)行的機器碼,所以非??臁2贿^,根據(jù)二八定律,大多數(shù)程序?qū)λ俣纫蟛桓?。某些對運行速度要求很高的情況,Python設(shè)計師傾向于使用JIT技術(shù),或者用使用C/C++語言改寫這部分程序。Python開發(fā)速度帶來的效益往往比執(zhí)行速度帶來的損失更為重要,尤其是在現(xiàn)代計算機高速的處理能力情況下。

第二個缺點就是代碼不能加密。如果要發(fā)布你的Python程序,實際上就是發(fā)布源代碼。這一點跟C語言不同,C語言不用發(fā)布源代碼,只需要把編譯后的機器碼發(fā)布出去。要從機器碼完整反推出C代碼是不可能的。


五、Python 的開發(fā)方向和應(yīng)用場景

Web網(wǎng)絡(luò)開發(fā):

Python提供豐富的模塊支持sockets編程,多線程編程,能方便快速地開發(fā)網(wǎng)絡(luò)服務(wù)程序。支持最新的XML技術(shù),支持json語言,數(shù)據(jù)庫編程,而且Python的ORM框架,使得操作數(shù)據(jù)庫非常方便。
Python還有優(yōu)秀的Django、Tornado、Flask等web開發(fā)框架,還用眾多的開源插件的支持,足以適用各種不同的web開發(fā)需求。

自動化運維。

Python對操作系統(tǒng)服務(wù)的內(nèi)置接口,使其成為編寫可移植的維護(hù)操作系統(tǒng)的管理工具和部件的理想工具。Python程序可以搜索文件和目錄樹,可以運行其他程序,可以使用進(jìn)程和線程并行處理。

網(wǎng)絡(luò)爬蟲。

在文本處理方面,python提供的re模塊能支持正則表達(dá)式,還提供SGML,XML分析模塊,許多程序員利用python進(jìn)行XML程序的開發(fā)。

圖形處理。

有PIL、Tkinter等圖形庫支持,能方便進(jìn)行圖形處理。 多媒體應(yīng)用 ,Python的PyOpenGL模塊封裝了“OpenGL應(yīng)用程序編程接口”,能進(jìn)行二和三維圖像處理。PyGame模塊可用于編寫游戲軟件

除此之外,Python還應(yīng)用于游戲、人工智能、大數(shù)據(jù)分析、機器人等領(lǐng)域。



六、Python的種類

Cpython:

執(zhí)行過程:程序----(c解釋器)----(字節(jié)碼)----(機器碼)-----cpu
?? Python的官方版本,這是Python初始的以及維護(hù)得最好的實現(xiàn),使用C編寫。新的語言特性一般會最先在這里出現(xiàn)。CPython實現(xiàn)會將源文件(py文件)轉(zhuǎn)換成字節(jié)碼文件(pyc文件),然后運行在Python虛擬機上。

Jyhton:

執(zhí)行過程:程序----(java解釋器)----(字節(jié)碼)----(機器碼)-----cpu
?? Python的Java實現(xiàn),此實現(xiàn)可用作Java應(yīng)用程序的腳本語言,或可用于使用Java類庫創(chuàng)建應(yīng)用程序,它也經(jīng)常用于為Java庫創(chuàng)建測試。Jython會將Python代碼動態(tài)編譯成Java字節(jié)碼,然后在JVM上運行。

PyPy:

執(zhí)行過程:程序----(字節(jié)碼)----(機器碼)-----cpu
?? 完全用Python編寫的Python實現(xiàn)。它支持在其他實現(xiàn)中沒有找到的幾個高級功能,如stackless支持和一個Just in Time編譯器。PyPy將Python的源碼翻編譯成字節(jié)碼再編譯成機器碼。

其他類別:Python for .NET、IronPython、RubyPython、Brython ...


七、Python版本

python有兩個版本,python 2.X和python 3:
?? python 2.x的最后一個版本是python2.7(于2010年發(fā)布),官方將支持到2020年。
?? python 3.X的第一個版本python 3.0(于2008年發(fā)布)

python 3.X不兼容 Python 2.X版本,官方也有發(fā)布python2.6作為過渡到Python 3.0的版本,2.6之后的版本都為過渡版本。
?? 為什么要開發(fā) Python 3.X版本呢?因為 python發(fā)展了20多年,里面有很多重復(fù)的功能,重復(fù)的模塊,很多代碼也變得不那么簡潔,所以Guido決定進(jìn)行一次徹底的升級,原則是去繁從簡,從而有了后續(xù)的 Python 3.X版本。


《Python基礎(chǔ)手冊》系列:

Python基礎(chǔ)手冊 1 —— Python語言介紹
Python基礎(chǔ)手冊 2 —— Python 環(huán)境搭建(Linux)
Python基礎(chǔ)手冊 3 —— Python解釋器
Python基礎(chǔ)手冊 4 —— 文本結(jié)構(gòu)
Python基礎(chǔ)手冊 5 —— 標(biāo)識符和關(guān)鍵字
Python基礎(chǔ)手冊 6 —— 操作符
Python基礎(chǔ)手冊 7 —— 內(nèi)建函數(shù)
Python基礎(chǔ)手冊 8 —— Python對象
Python基礎(chǔ)手冊 9 —— 數(shù)字類型
Python基礎(chǔ)手冊10 —— 序列(字符串)
Python基礎(chǔ)手冊11 —— 序列(元組&列表)
Python基礎(chǔ)手冊12 —— 序列(類型操作)
Python基礎(chǔ)手冊13 —— 映射(字典)
Python基礎(chǔ)手冊14 —— 集合
Python基礎(chǔ)手冊15 —— 解析
Python基礎(chǔ)手冊16 —— 文件
Python基礎(chǔ)手冊17 —— 簡單語句
Python基礎(chǔ)手冊18 —— 復(fù)合語句(流程控制語句)
Python基礎(chǔ)手冊19 —— 迭代器
Python基礎(chǔ)手冊20 —— 生成器
Python基礎(chǔ)手冊21 —— 函數(shù)的定義
Python基礎(chǔ)手冊22 —— 函數(shù)的參數(shù)
Python基礎(chǔ)手冊23 —— 函數(shù)的調(diào)用
Python基礎(chǔ)手冊24 —— 函數(shù)中變量的作用域
Python基礎(chǔ)手冊25 —— 裝飾器
Python基礎(chǔ)手冊26 —— 錯誤 & 異常
Python基礎(chǔ)手冊27 —— 模塊
Python基礎(chǔ)手冊28 —— 模塊的高級概念
Python基礎(chǔ)手冊29 —— 包

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,048評論 25 709
  • 本節(jié)內(nèi)容 Python介紹 發(fā)展史 Python 2 or 3? 安裝 Hello World程序 變量 用戶輸入...
    小小不懂11閱讀 3,542評論 2 30
  • TITLE: 編程語言亂燉 碼農(nóng)最大的煩惱——編程語言太多。不是我不學(xué)習(xí),這世界變化快! 有時候還是蠻懷念十幾、二...
    碼園老農(nóng)閱讀 5,594評論 2 35
  • 今天,我給奶奶做賀卡,因為再過幾天就是奶奶的生日啦! 媽媽給我了兩張賀卡,一張綠色的,一張紅色的。還有許多漂亮的貼...
    德之閱讀 1,660評論 4 6
  • 老張在開頭說那個女孩子最佩服你的是有著從頭再來的決心,我在這里已想借這樣一句話表達(dá)下我對敢于放棄所有,能夠選擇從頭...
    旭日而生閱讀 629評論 0 3

友情鏈接更多精彩內(nèi)容