天天看點

Python簡介

Python簡介--[末尾有帥照~]

Python 簡介

Python

Python由荷蘭數學和計算機科學研究學會的[Guido van Rossum](https://baike.baidu.com/item/Guido van Rossum/3225314) (龜叔)于1990 年代初設計,作為一門叫做ABC語言的替代品。 Python提供了高效的進階資料結構,還能簡單有效地面向對象程式設計。Python文法和動态類型,以及解釋型語言的本質,使它成為多數平台上寫腳本和快速開發應用的程式設計語言,随着版本的不斷更新和語言新功能的添加,逐漸被用于獨立的、大型項目的開發。

Python解釋器易于擴充,可以使用C或C++(或者其他可以通過C調用的語言)擴充新的功能和資料類型。 Python 也可用于可定制化軟體中的擴充程式語言。Python豐富的标準庫,提供了适用于各個主要系統平台的源碼或機器碼。

2021年10月,語言流行指數的編譯器Tiobe将Python加冕為最受歡迎的程式設計語言,20年來首次将其置于Java、C和JavaScript之上。 [16]

在IT行業流傳這樣一句古話,‘祖傳代碼’不要動,不要輕易的更新版本尤其是跟程式代碼相關的~

語言特點

優點

簡單:Python是一種代表簡單主義思想的語言。閱讀一個良好的Python程式就感覺像是在讀英語一樣。它使你能夠專注于解決問題而不是去搞明白語言本身。

易學:Python極其容易上手,因為Python有極其簡單的說明文檔 [9] 。

易讀、易維護:風格清晰劃一、強制縮進

用途廣泛

速度快:Python 的底層是用 C 語言寫的,很多标準庫和第三方庫也都是用 C 寫的,運作速度非常快。

免費、開源:Python是FLOSS(自由/開放源碼軟體)之一。使用者可以自由地釋出這個軟體的拷貝、閱讀它的源代碼、對它做改動、把它的一部分用于新的自由軟體中。FLOSS是基于一個團體分享知識的概念。

高層語言:用Python語言編寫程式的時候無需考慮諸如如何管理你的程式使用的記憶體一類的底層細節。

可移植性:由于它的開源本質,Python已經被移植在許多平台上(經過改動使它能夠工作在不同平台上)。這些平台包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE、PocketPC、Symbian以及Google基于linux開發的android平台。

解釋性:一個用編譯性語言比如C或C++寫的程式可以從源檔案(即C或C++語言)轉換到一個你的計算機使用的語言(二進制代碼,即0和1)。這個過程通過編譯器和不同的标記、選項完成。

運作程式的時候,連接配接/轉載器軟體把你的程式從硬碟複制到記憶體中并且運作。而Python語言寫的程式不需要編譯成二進制代碼。你可以直接從源代碼運作 程式。

在計算機内部,Python解釋器把源代碼轉換成稱為位元組碼的中間形式,然後再把它翻譯成計算機使用的機器語言并運作。這使得使用Python更加簡單。也使得Python程式更加易于移植。

面向對象:Python既支援面向過程的程式設計也支援面向對象的程式設計。在“面向過程”的語言中,程式是由過程或僅僅是可重用代碼的函數建構起來的。在“面向對象”的語言中,程式是由資料和功能組合而成的對象建構起來的。

Python是完全面向對象的語言。函數、子產品、數字、字元串都是對象。并且完全支援繼承、重載、派生、多繼承,有益于增強源代碼的複用性。Python支援重載運算符和動态類型。相對于Lisp這種傳統的函數式程式設計語言,Python對函數式設計隻提供了有限的支援。有兩個标準庫(functools, itertools)提供了Haskell和Standard ML中久經考驗的函數式程式設計工具。

可擴充性、可擴充性:如果需要一段關鍵代碼運作得更快或者希望某些算法不公開,可以部分程式用C或C++編寫,然後在Python程式中使用它們。

Python本身被設計為可擴充的。并非所有的特性和功能都內建到語言核心。Python提供了豐富的API和工具,以便程式員能夠輕松地使用C語言、C++、Cython來編寫擴充子產品。Python編譯器本身也可以被內建到其它需要腳本語言的程式内。是以,很多人還把Python作為一種“膠水語言”(glue language)使用。使用Python将其他語言編寫的程式進行內建和封裝。在Google内部的很多項目,例如Google Engine使用C++編寫性能要求極高的部分,然後用Python或Java/Go調用相應的子產品。《Python技術手冊》的作者馬特利(Alex Martelli)說:“這很難講,不過,2004 年,Python 已在Google 内部使用,Google 召募許多 Python 高手,但在這之前就已決定使用Python,他們的目的是 Python where we can, C++ where we must,在操控硬體的場合使用C++,在快速開發時候使用 Python。”

可嵌入性:可以把Python嵌入C/C++程式,進而向程式使用者提供腳本功能。

豐富的庫:Python标準庫确實很龐大。它可以幫助處理各種工作,包括正規表達式、文檔生成、單元測試、線程、資料庫、網頁浏覽器、CGI、FTP、電子郵件、XML、XML-RPC、HTML、WAV檔案、密碼系統、GUI(圖形使用者界面)、Tk和其他與系統有關的操作。這被稱作Python的“功能齊全”理念。除了标準庫以外,還有許多其他高品質的庫,如wxPython、Twisted和Python圖像庫等等。

規範的代碼:Python采用強制縮進的方式使得代碼具有較好可讀性。而Python語言寫的程式不需要編譯成二進制代碼。Python的作者設計限制性很強的文法,使得不好的程式設計習慣(例如if語句的下一行不向右縮進)都不能通過編譯。其中很重要的一項就是Python的縮進規則。一個和其他大多數語言(如C)的差別就是,一個子產品的界限,完全是由每行的首字元在這一行的位置來決定(而C語言是用一對大括号{}來明确的定出子產品的邊界,與字元的位置毫無關系)。通過強制程式員們縮進(包括if,for和函數定義等所有需要使用子產品的地方),Python确實使得程式更加清晰和美觀。

進階動态程式設計:雖然Python可能被粗略地分類為“腳本語言”(script language),但實際上一些大規模軟體開發計劃例如Zope、Mnet及BitTorrent,Google也廣泛地使用它。Python的支援者較喜歡稱它為一種進階動态程式設計語言,原因是“腳本語言”泛指僅作簡單程式設計任務的語言,如shellscript、VBScript等隻能處理簡單任務的程式設計語言,并不能與Python相提并論。

做科學計算優點多:說起科學計算,首先會被提到的可能是MATLAB。除了MATLAB的一些專業性很強的工具箱還無法被替代之外,MATLAB的大部分常用功能都可以在Python世界中找到相應的擴充庫。和MATLAB相比,用Python做科學計算有如下優點:

● 首先,MATLAB是一款商用軟體,并且價格不菲。而Python完全免費,衆多開源的科學計算庫都提供了Python的調用接口。使用者可以在任何計算機上免費安裝Python及其絕大多數擴充庫。

● 其次,與MATLAB相比,Python是一門更易學、更嚴謹的程式設計語言。它能讓使用者編寫出更易讀、易維護的代碼。

● 最後,MATLAB主要專注于工程和科學計算。然而即使在計算領域,也經常會遇到檔案管理、界面設計、網絡通信等各種需求。而Python有着豐富的擴充庫,可以輕易完成各種進階任務,開發者可以用Python實作完整應用程式所需的各種功能。

缺點

單行語句和指令行輸出問題:很多時候不能将程式連寫成一行,如import sys;for i in sys.path:print i。而perl和awk就無此限制,可以較為友善的在shell下完成簡單程式,不需要如Python一樣,必須将程式寫入一個.py檔案。

給初學者帶來困惑:獨特的文法,這也許不應該被稱為局限,但是它用縮進來區分語句關系的方式還是給很多初學者帶來了困惑。即便是很有經驗的Python程式員,也可能陷入陷阱當中。

運作速度慢:這裡是指與C和C++相比。Python開發人員盡量避開不成熟或者不重要的優化。一些針對非重要部位的加快運作速度的更新檔通常不會被合并到Python内。是以很多人認為Python很慢。不過,根據二八定律,大多數程式對速度要求不高。在某些對運作速度要求很高的情況,Python設計師傾向于使用JIT技術,或者用使用C/C++語言改寫這部分程式。可用的JIT技術是PyPy。

和其他語言差別

對于一個特定的問題,隻要有一種最好的方法來解決

這在由Tim Peters寫的Python格言(稱為The Zen of Python)裡面表述為:There should be one-- and preferably only one --obvious way to do it. 這正好和Perl語言(另一種功能類似的進階動态語言)的中心思想TMTOWTDI(There's More Than One Way To Do It)完全相反。

Python的設計哲學是“優雅”、“明确”、“簡單”。是以,Perl語言中“總是有多種方法來做同一件事”的理念在Python開發者中通常是難以忍受的。Python開發者的哲學是“用一種方法,最好是隻有一種方法來做一件事”。在設計Python語言時,如果面臨多種選擇,Python開發者一般會拒絕花俏的文法,而選擇明确的沒有或者很少有歧義的文法。由于這種設計觀念的差異,Python源代碼通常被認為比Perl具備更好的可讀性,并且能夠支撐大規模的軟體開發。這些準則被稱為Python格言。在Python解釋器内運作import this可以獲得完整的清單。

更進階的Virtual Machine

Python在執行時,首先會将.py檔案中的源代碼編譯成Python的byte code(位元組碼),然後再由Python Virtual Machine(Python虛拟機)來執行這些編譯好的byte code。這種機制的基本思想跟Java,.NET是一緻的。然而,Python Virtual Machine與Java或.NET的Virtual Machine不同的是,Python的Virtual Machine是一種更進階的Virtual Machine。這裡的進階并不是通常意義上的進階,不是說Python的Virtual Machine比Java或.NET的功能更強大,而是說和Java 或.NET相比,Python的Virtual Machine距離真實機器的距離更遠。或者可以這麼說,Python的Virtual Machine是一種抽象層次更高的Virtual Machine。基于C的Python編譯出的位元組碼檔案,通常是.pyc格式。除此之外,Python還可以以互動模式運作,比如主流作業系統Unix/Linux、Mac、Windows都可以直接在指令模式下直接運作Python互動環境。直接下達操作指令即可實作互動操作。

注.如有侵權,删

龜叔的帥照:

Python簡介
不過龜叔回歸了,讓我們一起來期待python的下一個版本!

下一篇會寫一篇非常詳細的Python和PyCharm的安裝教程,記得來看~

Python簡介