Python的優點

Python的優點不少,據很多人說是用了之后就不想再學其他語言的語言,羅列其優點如下:?

1、面向對象?

從根本上講,Python?是一種面向對象的語言。它的類模塊支持多態、操作符重載和多重繼承等高級概念,并且以Python?特有的簡潔的語法和類型,OOP?十分易于使用。事實上,即使你不懂這些術語,仍會發現學習Python?比學習其他OOP?語言要容易得多。?

除了作為一種強大的代碼構建和重用手段以外,Python?的OOP?特性使它成為面向對象系統語言如C++?和Java?的理想腳本工具。例如,通過適當的粘接代碼,Python?程序可以對C++?、Java?和C#?的類進行子類的定制。?

OOP?是Python?的一個選擇而已,這一點非常重要。不必強迫自己立馬成為一個面向對象高手,你同樣可以繼續深入學習。就像C++?一樣,Python?既支持面向對象編程也支持面向過程編程的模式。如果條件允許的話,其面向對象的工具即刻生效。這對處于預先設計階段的策略開發模式十分有用。?

2、免費?

Python?的使用和分發是完全免費的。就像其他的開源軟件一樣,例如,Tcl?、Perl?、Linux?和Apache?。你可以從Internet?上免費獲得Python?系統的源代碼。復制Python?,將其嵌入你的系統或者隨產品一起發布都沒有任何限制。實際上,如果你愿意的話,甚至可以銷售它的源代碼。?

但請別誤會:"免費"并不代表"?無支持"。恰恰相反,Python?的在線社區對用戶需求的響應和商業軟件一樣快。而且,由于Python?完全開放源代碼,提高了開發者的實力,并產生了一個很大的專家團隊。盡管學習研究或改變一個程序語言的實現并不是對每一個人來說都那么有趣,但是當你知道還有源代碼作為最終的幫助和無盡的文檔資源是多么的令人欣慰。你不需要去依賴商業廠商。?

Python?的開發是由社區驅動的,是Internet?大范圍的協同合作努力的結果。這個團體包括Python?的創始者Guido?van?Rossum:Python?社區內公認的"終身的慈善獨裁者"[Benevolent?Dictator?for?Life?(BDFL)?]?。Python?語言的改變必須遵循一套規范的有約束力的程序(稱作PEP?流程),并需要經過規范的測試系統和BDFL?進行徹底檢查。值得慶幸的是,正是這樣使得Python?相對于其他語言可以保守地持續改進。?

3、可移植?

Python?的標準實現是由可移植的ANSI?C?編寫的,可以在目前所有的主流平臺上編譯和運行。例如,如今從PDA?到超級計算機,到處可以見到Python?在運行。Python?可以在下列平臺上運行(這里只是部分列表):?

Linux?和UNIX?系統。?

微軟Windows?和DOS?(所有版本)。?

Mac?OS?(包括OS?X?和Classic?)。?

BeOS?、OS/2?、VMS?和QNX?。?

實時操作系統,例如,VxWorks?。?

Cray?超級計算機和IBM?大型機。?

運行Palm?OS?、PocketPC?和Linux?的PDA?。?

運行Windows?Mobile?和Symbian?OS?的移動電話。?

游戲終端和iPod?。?

還有更多。?

除了語言解釋器本身以外,Python?發行時自帶的標準庫和模塊在實現上也都盡可能地考慮到了跨平臺的移植性。此外,Python?程序自動編譯成可移植的字節碼,這些字節碼在已安裝兼容版本Python?的平臺上運行的結果都是相同的。?

這些意味著Python?程序的核心語言和標準庫可以在Linux?、Windows?和其他帶有Python?解釋器的平臺無差別的運行。大多數Python?外圍接口都有平臺相關的擴展(例如,COM?支持Windows?),但是核心語言和庫在任何平臺都一樣。就像之前我們提到的那樣,Python?還包含了一個叫做Tkinter?的Tk?GUI?工具包,它可以使Python?程序實現功能完整的無需做任何修改即可在所有主流GUI?平臺運行的用戶圖形界面。?

4、功能強大?

從特性的觀點來看,Python?是一個混合體。它豐富的工具集使它介于傳統的腳本語言(例如,Tcl?、Scheme?和Perl?)和系統語言(例如,C、C++?和Java)?之間。Python?提供了所有腳本語言的簡單和易用性,并且具有在編譯語言中才能找到的高級軟件工程工具。不像其他腳本語言,這種結合使Python?在長期大型的開發項目中十分有用。下面是一些Python?工具箱中的工具簡介。?

動態類型Python?在運行過程中隨時跟蹤對象的種類,不需要代碼中關于復雜的類型和大小的聲明。事實上,你將在第6章中看到,Python?中沒有類型或變量聲明這回事。因為Python?代碼不是約束數據的類型,它往往自動地應用了一種廣義上的對象。?

自動內存管理Python?自動進行對象分配,當對象不再使用時將自動撤銷對象("垃圾回收"),當需要時自動擴展或收縮。Python?能夠代替你進行底層的內存管理。?

大型程序支持為了能夠建立更大規模的系統,Python?包含了模塊、類和異常等工具。這些工具允許你組織系統為組件,使用OOP?重用并定制代碼,并以一種優雅的方式處理事件和錯誤。?

內置對象類型Python?提供了常用的數據結構作為語言的基本組成部分。例如,列表(list?)、字典(dictionary?)、字符串(string?)。我們將會看到,它們靈活并易于使用。例如,內置對象可以根據需求擴展或收縮,可以任意地組織復雜的信息等。?

內置工具為了對以上對象類型進行處理,Python?自帶了許多強大的標準操作,包括合并(concatenation?)、分片(slice?)、排序(sort?)和映射(mapping?)等。?

庫工具為了完成更多特定的任務,Python?預置了許多預編碼的庫工具,從正則表達式匹配到網絡都支持。Python?的庫工具在很多應用級的操作中發揮作用。?

第三方工具由于?Python?是開放源代碼的,它鼓勵開發者提供Python?內置工具之外的預編碼工具。從網絡上,可以找到COM?、圖像處理、CORBA?ORB?、XML?、數據庫等很多免費的支持工具。?

除了這一系列的Python?工具外,Python?保持了相當簡潔的語法和設計。綜合這一切得到的就是一個具有腳本語言所有可用性的強大編程工具。?

5、可混合?

Python?程序可以以多種方式輕易地與其他語言編寫的組件"粘接"在一起。例如,Python?的C語言API?可以幫助Python?程序靈活地調用C程序。這意味著可以根據需要給Python?程序添加功能,或者在其他環境系統中使用Python?。例如,將Python?與C或者C++?寫成的庫文件混合起來,使Python?成為一個前端語言和定制工具。就像之前我們所提到過的那樣,這使Python?成為一個很好的快速原型工具;首先出于開發速度的考慮,系統可以先使用Python?實現,之后轉移至C,根據不同時期性能的需要逐步實現系統。?

6、使用簡單?

運行Python?程序,只需要簡單地鍵入Python?程序并運行就可以了。不需要其他語言(例如,C或C++?)所必須的編譯和鏈接等中間步驟。Python?可立即執行程序,這形成了一種交互式編程體驗和不同情況下快速調整的能力,往往在修改代碼后能立即看到程序改變后的效果。?

當然,開發周期短僅僅是Python?易用性的一方面的體現。Python?提供了簡潔的語法和強大的內置工具。實際上,Python?曾有種說法叫做"可執行的偽代碼"。由于它減少了其他工具常見的復雜性,當實現相同的功能時,用Python?程序比采用C、C++?和Java?編寫的程序更為簡單、小巧,也更靈活。?

7、Python?是工程,不是藝術?

當Python?于20?世紀90?年代初期出現在軟件舞臺上時,曾經引發其擁護者和另一個受歡迎腳本語言Perl?的擁護者之間的沖突,但現今已成為經典的爭論。我們認為今天這種爭論令人厭倦,也沒有根據,開發人員都很聰明,可以找到他們自己的結論。然而,這是我在培訓課程上時常被問到的問題之一,所以在此對這個話題說幾句話,似乎是合適的。?

故事是這樣的:你可以用Python?做到一切用Perl?能做到的事,但是,做好之后,還可以閱讀自己的程序代碼。就是因為這樣,兩者的領域大部分重疊,但是,Python?更專注于產生可讀性的代碼。就大多數人而言,Python?強化了可讀性,轉換為了代碼可重用性和可維護性,使得Python?更適合用于不是寫一次就丟掉的程序。Perl?程序代碼很容易寫,但是很難讀。由于多數軟件在最初的創建后都有較長的生命周期,所以很多人認為Python?是一種更有效的工具。?

這個故事反應出兩個語言的設計者的背景,并體現出了人們選擇使用Python?的一些主要原因。Python?的創立者所受的是數學家的訓練,因此,他創造出來的語言具有高度的統一性,其語法和工具集都相當一致。再者,就像數學一樣,其設計也具有正交性(orthogonal?),也就是這門語言大多數組成部分都遵循一小組核心概念。例如,一旦掌握Python?的多態,剩下的就只是細節而已。?

與之相對比,Perl?語言的創立者是語言學家,而其設計反應了這種傳統。Perl?中,相同任務有很多方式可以完成,并且語言材料的交互對背景環境敏感,有時還有相當微妙的方式,就像自然語言那樣。就像著名的Perl?所說的格言:"完成的方法不止一種。"有了這種設計,Perl?語言及其用戶社群在編寫代碼時,就一直在鼓勵表達式的自由化。一個人的Perl?代碼可能和另一個人的完全不同。事實上,編寫獨特、充滿技巧性的代碼,常常是Perl?用戶之間的驕傲來源。?

但是,任何做過任何實質性的代碼維護工作的人,應該都可以證實,表達式自由度是很棒的藝術,但是,對工程來說就令人厭惡了。在工程世界中,我們需要最小化功能集和可預測性。在工程世界中,表達式自由度會造成維護的噩夢。不止一位Perl?用戶向我們透漏過,太過于自由的結果通常就是程序很容易重頭寫起,但修改起來就不是那么容易了。?

考慮一下:當人們在作畫或雕塑時,他們是為自己做,為了純粹美學考慮。其他人日后去修改圖畫或雕像的可能性很低。這是藝術和工程之間關鍵的差異。當人們在編寫軟件時,他們不是為自己寫。事實上,他們甚至不是專門為計算機寫的。而實際上,優秀的程序員知道,代碼是為下一個會閱讀它而進行維護或重用的人寫的。如果那個人無法理解代碼,在現實的開發場景中,就毫無用處了。?

這就是很多人認為Python?最有別于Perl?這類描述語言的地方。因為Python?的語法模型幾乎會強迫用戶編寫可讀的代碼,所以Python?程序會引導他們往完整的軟件開發循環流程前進。此外,因為Python?強調了諸如有限互動、統一性、規則性以及一致性這些概念,因此,會更進一步促進代碼在首次編寫后能夠長期使用。?

長期以來,Python?本身專注于代碼質量,提高了程序員的生產力,以及程序員的滿意度。Python?程序員也變得富有創意,以后就知道,語言本身的確對某些任務提供了多種解決辦法。不過,本質上,Python?鼓勵優秀的工程的方式,是其他腳本語言通常所不具備的。?

至少,這是許多采用Python?的人之間所具有的共識。當然,你應該要自行判斷這類說法,也就是通過了解Python?提供了什么給你。為了幫助你們入門,讓我們進行下一章的學習吧。?

8、簡單易學?

這一部分引出了本書的重點:相對于其他編程語言,Python?語言的核心是驚人的簡單易學。實際上,你可以在幾天內(如果你是有經驗的程序員,或許只需要幾個小時)寫出不錯的Python?代碼。這對于那些想學習語言可以在工作中應用的專業人員來說是一個好消息,同樣對于那些使用Python?進行定制或控制系統的終端用戶來說也是一個好消息。如今,許多系統依賴于終端用戶可以很快地學會Python?以便定制其代碼的外圍工具,從而提供較少的支持甚至不提供支持。盡管Python?還是有很多高級編程工具,但不論對初學者還是行家高手來說,Python?的核心語言仍是相當簡單的。?

名字來源于?Monty?Python?

Python?名字的來源這不算是一項技術,但是,這似乎是令人很驚訝、保護得很好的秘密,而我們希望把它全盤托出。盡管Python?世界中都是蟒蛇的圖標,但事實是,Python?創立者Guido?van?Rossum?是以BBC?喜劇Monty?Python's?Flying?Circus?來命名的。他是Monty?Python?的大影迷,而很多軟件開發人員也是(事實上,這兩個領域似乎有種對稱)。?

這給?Python?代碼的例子加入一種幽默的特質。比如,一般來說,傳統常規的變量名為"foo?"和"bar?",在Python?的世界中變成了"spam?"和"eggs?"。而有時出現的"Brian?"、"ni?"、"shrubbery?"等也是這樣來的。這種方式甚至很大程度上影響了Python?社區:Python?會議上的演講往往叫做"The?Spanish?Inquisition?"。?

當然,如果你熟悉這個幽默劇的話,所有這些你都會覺得很有趣,否則就沒那么有意思了。你沒有必要為了理解引自?Monty?Python?(也許本書中你就會找到)的例子而刻意去熟悉這一串劇情,但是至少你現在應該知道它們的來源。?

Python官網: http://www.python.org/

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/447568.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/447568.shtml
英文地址,請注明出處:http://en.pswp.cn/news/447568.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

IDEA 中的.iml文件和.idea文件夾 ( 隱藏方式 )

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 初次使用IDEA,創建一個maven工程,發現在目錄結構中產生了兩個不一樣的東西:.iml 文件和 .idea 文件夾…

python的優缺點

python的優缺點 優點 簡單————Python是一種代表簡單主義思想的語言。閱讀一個良好的Python程序就感覺像是在讀英語一樣,盡管這個英語的要求非常嚴格!Python的這種偽代碼本質是它最大的優點之一。它使你能夠專注于解決問題而不是去搞明白語言本身。 易…

springCloud - 第12篇 - 服務監控 Hystrix 面板

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 前面有用過 Hystrix 熔斷,在多服務運行時。可以通過 Hystrix 的監控面板來實時觀察各個服務的運行健康、效率和請求量等。 …

專訪Google數據科學家彭晨:大數據成為潮流走近各行各業!

摘要:在“2014中美大數據研討會”開始之前,CSDN采訪了谷歌公司數據科學家彭晨,他表示之所以“大數據”火,是因為人類第一次可以精確的、系統的、實時的、全方位的、永久的獲取、記錄、分析、并保存海量的數據。 端午節后6月6日&a…

解決:ClassNotFoundException: com.netflix.hystrix.contrib.javanica.aop.aspectj.HystrixCommandAspect

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 1. 場景,springcloud 學習工程中,把 feign 和 ribbon 工程 作為應用服務,納入 hystrix-turbine 服務…

白領夫婦白手起家 6年賺得兩房兩車

“讓金錢成為你們的奴隸,而不是被金錢奴役著。”金先生談到他的理財經驗時如是說。從大學畢業開始,他通過6年在投資道路上摸爬滾打,靠夫妻兩人的雙手掙得了全部的家當而沒有依靠父母,如今已擁有兩房兩車和上百萬的資產&#xff0c…

解決:com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused:

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 1. 場景:啟動一個需要注冊到 eureka 注冊中心的服務 seeParam 報錯: com.sun.jersey.api.client.ClientHandle…

springCloud - 第13篇 - 服務監控 集群模式 Hystrix-turbine

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 1. 在springcloud 體系中,可以用 hystrix-dashboard 實時監控服務的運行狀態。上一文記錄了單實例的監控,現在實…

借錢的境界:開價越低 借成的機會反而越小

一提起借錢,沒有幾個人不膽戰心驚的。有限的幾張鈔票,好端端地隱居在自己口袋里,忽然一只手伸過來把它帶走,真教人一點安全感都沒有。借錢的威脅不下于核子戰爭:后者畢竟不常發生,而且同難者眾,…

解決:Error response from daemon: Cannot restart container xxx: driver failed programming external

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 1. 我的情況:個人站點訪問不了,重啟了阿里云ECS服務器后,發現服務器 80端口不通,于是重啟…

專訪許鵬:談C程序員修養及大型項目源碼閱讀與學習

摘要:閱讀源碼是開源項目最好的學習方式,然而真正的執行起來卻并不容易。這里我們為大家分享許鵬的源碼閱讀經驗、C程序員的修養以及Spark和Storm源碼走讀博文。 對許鵬的第一印象來源于其Bolg的粗讀,最早時候更準確說應該是博文的粗略統計—…

解決:mysql 連接報錯 Authentication plugin ‘caching_sha2_password‘cannot be loaded

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 Navicat連接linux上的mysql時報如下錯誤: 錯誤原因: 即從mysql5.7版本之后,默認采用了caching_sha2_…

酒店房間和 C++ 局部變量的作用域

本文由 伯樂在線 - 菜鳥浮出水 翻譯自 StackOverflow。歡迎加入 技術翻譯小組。轉載請參見文章末尾處的要求。問題:Can a local variable’s memory be accessed outside its scope? 有一段局部變量的內存,可以從其范圍之外訪問它么? 如下…

解決:Access denied for user ‘root’@‘localhost’(using password: YES)

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 我報這個錯的原因很簡單:數據庫連接時密碼輸入錯誤。把密碼確認對了,就連接成功了。

【歷史回顧】Linux發展一覽

我們周圍到處都有Linux的身影,在家中、公司里、大學、實驗室,太空空間站。現在的Linux已經從一個個人愛好發展成了一場計算機革命。在這篇文章里,我們向你展示最完整的Linux 23年來發展的歷史年表。我們周圍到處都有Linux的身影,在…

專訪聯想謝政維:功耗和價格是天蝎項目最大障礙!

摘要:與國外OpenStack和OCP(開放計算項目)頻頻見諸報端不同,中國的天蝎計劃看起來神神秘秘,今天專訪聯想謝政維,他幫我們解密了目前天蝎項目的一些基本情況,以及他對未來天蝎發展的觀點。 服務…

解決:Chrome 插件安裝時提示 程序包無效:“CRX_HEADER_INVALID“

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 今天在添加谷歌插件的時候,卻發現谷歌瀏覽器顯示 程序包無效:"CRX_HEADER_INVALID",現整理…

65種GPU性能測試,AMD開源驅動領先!

摘要:近日,Phoronix測試了65 種不同的GPU使用開源驅動的OpenGL性能,測試的GPU型號包括Intel HD Graphics、AMD Radeon、AMD FirePro和NVIDIA GeForce系列。結果顯示,相比之下,AMD開源驅動領先于NVIDIA。 【編者按】20…

1分鐘看懂:java 項目中 VO 、DTO、Entity,各自是在什么情況下應用的

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 1、entity 里的每一個字段,與數據庫相對應, 2、vo 里的每一個字段,是和你前臺 html 頁面相對應&…

指尖上的藝術——如何運用代碼發揮無限創意

摘要:計算機為我們的生活帶來了不計其數的變化,現在,我們不妨也把它與藝術結合起來,去從機器的角度來為生活增添活力與色彩,開拓一個無限可能的藝術創作新境界。 寫在前面 生成的藝術,指尖上的藝術&#…