人生不值得,我在用python.1_關於python

來源:互聯網
上載者:User

標籤:先行編譯   bit   瀏覽器   快速   可擴充   ram   檔案   密碼   java原始碼   

  一直喜歡編程,最近決定潛心入坑。起初一直在研究要學什麼語言,想過c語言,學過VB(兩天。。。),後來聽說了python,功能強大,並且適合小白入手。文筆不行,但還是申請了部落格號,以便記錄、發表自己的所想所悟,希望往後的日子能堅持現在的這份熱忱,達到自己想要達到的高度。加油!

————————————————————————————————————————————————————

關於python

簡介:

  Python是一種物件導向的解釋型、動態進階電腦程式設計語言,有荷蘭人Guido van Rossum於1989年發明,第一個公開發行版發行於1991年。

  Python是純粹的自由軟體,原始碼和解譯器CPython遵循GPL協議。Python文法簡潔清晰,特色之一是強制用空白符做語句縮排。

  Python具有豐富和強大的庫。它常被暱稱為膠水語言,能夠將其他語言製作的各種模組(尤其是c/c++)連接在一起。常見的一種應用情形是,使用Python快速產生程式的原型,如果有其他特別要求的部分,可以用其他語言改寫。

  2018年發布版本3.x,於3月,官方宣布Python2.7將於2020年1月1日終止支援。使用者如果想要在這個日期之後繼續得到與Python2.7有關的支援,則需要付費給商業供應商。

 

特點: 優點

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

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

  速度快: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既支援面向過程的編程也支援物件導向的編程。在"面向過程"的語言中,程式是由過程或僅僅是可重用代碼的函數構建起來的。在"物件導向"的語言中,程式是由資料和功能組合而成的對象構建起來的。

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

  可嵌入性:可以把Python嵌入C/C++程式,從而向程式使用者提供指令碼功能。

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

  規範的代碼:Python採用強制縮排的方式使得代碼具有較好可讀性。而Python語言寫的程式不需要編譯成二進位代碼。

缺點

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

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

  運行速度慢:這裡是指與C和C++相比。

 

應用

  系統編程:提供API(Application Programming InterfaceAPI),能方便進行系統維護和管理,Linux下標誌性語言之一,是很多系統管理員理想的編程工具 。

  • 圖形處理:有PIL、Tkinter等圖形庫支援,能方便進行圖形處理。
  • 數學處理:NumPy擴充提供大量與許多標準數學庫的介面。
  • 文本處理:python提供的re模組能支援Regex,還提供SGML,XML分析模組,許多程式員利用python進行XML程式的開發。
  • 資料庫編程:程式員可通過遵循Python DB-API(資料庫應用程式編程介面)規範的模組與Microsoft SQL Server,Oracle,Sybase,DB2,MySQL、SQLite等資料庫通訊。python內建有一個Gadfly模組,提供了一個完整的SQL環境。
  • 網路編程:提供豐富的模組支援sockets編程,能方便快速地開發分布式應用程式。很多大規模軟體開發計劃例如Zope,Mnet 及Bit Tottent. Google都在廣泛地使用它。
  • Web編程:應用的開發語言,支援最新的XML技術。
  • 多媒體應用:Python的PyOpenGL模組封裝了"OpenGLAPI",能進行二維和三維影像處理。PyGame模組可用於編寫遊戲軟體。
  • pymo引擎:PYMO全稱為python memories off,是一款運行於Symbian S60V3,Symbian3,S60V5, Symbian3, Android系統上的AVG遊戲引擎。因其基於python2.0平台開發,並且適用於建立秋之回憶(memories off)風格的AVG遊戲,故命名為PYMO。
  • 駭客編程:python有一個hack的庫,內建了你熟悉的或不熟悉的函數,但是缺少成就感。
  • 用Python寫簡單爬蟲:首先,要通過urllib2這個Module獲得對應的HTML源碼。(PS:在python3.3之後urllib2已經不能再用,代之以urllib)通過上面這三句就可以將URL的源碼存在content變數中,其類型為字元型。接下來是要從這堆HTML源碼中提取我們需要的內容。用Chrome查看一下對應的內容的代碼(也可以用Firefox的Firebug)。可以看到url的資訊儲存在span標籤中,要擷取其中的資訊可以用正則式。
 ———擴充:

  編譯型語言&解釋型語言

  電腦是不能識別進階語言的,當我們在運行進階語言的時候,需要一個翻譯機來把進階語言轉變為電腦能夠讀懂的機器語言,其中,有兩種實現方式:

  一種是編譯,另一種是解釋。

  編譯型語言:在程式執行之前,有一個單獨的編譯過程,將程式翻譯成機器語言,以後執行這個程式的時候,就不用再翻譯了。

  解釋型語言:在啟動並執行時候將程式翻譯成機器語言,所以運行速度相對於編譯型語言要慢。

  前者是一次把所有的代碼轉換成機器語言,然後寫成可執行檔。後者是再程式啟動並執行前一刻,還只有來源程式而沒有可執行程式;當程式每執行到來源程式的某一條指令,則會有一個稱之為解釋程式的外殼程式將原始碼轉換成二進位代碼以供執行,總而言之,就是不斷解釋、執行、解釋、執行......因此,解釋型程式離不開解釋程式的。

  其實,兩者各有優劣,前者由於程式執行速度快,同等條件下對系統要求較高,因此像開發作業系統、大型應用程式、資料庫系統等,便採用編譯語言(c/c++、pascal/object、Pascal(Delphi)、VB等)。而一些網頁指令碼、伺服器指令碼及輔助開發介面此類對速度要求不高、對不同系統平台鍵的相容性有一定要求的程式則採用解釋型語言(Java、JavaScript、VBScript、Perl、Python等)。

  當下,由於兩者間優劣大致互補,並且隨著設計技術與硬體的不斷髮展,編譯型與解釋型兩種方式的界限正在不斷變得模糊。例如Java雖屬於解釋型語言,但在執行之前已經預先進行一次先行編譯,產生的程式碼是介於機器碼和Java原始碼之間的中介代碼,啟動並執行時候則由JVM(Java的虛擬機器平台,可視為解譯器)解釋執行。它既保留了原始碼的高抽象、可移植的特點,又已經完成了對原始碼的大部分先行編譯工作,所以執行起來比“純解釋型”程式要快許多。

  動態型語言&靜態型語言

  動態型語言:在運行時才確定資料類型的語言。變數使用之前不需要型別宣告,通常變數的類型是被賦值的那個值的類型。例如:Python、Ruby、Perl等。

  靜態型語言:在編譯時間變數的資料類型就被定義,多數靜態類型語言要求在使用變數之前必須聲明資料類型。例如:C++、Java、Delphi、C#等

  

 

  (ps:部分內容摘抄、改寫於網路,由於涉水未深,按個人理解角度敲字,部分內容不免有錯,望諒之!)

 

人生不值得,我在用python.1_關於python

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.