python基礎-初識Python和不同語言之間的區別
一、Python的創始人誰?
Python之父:吉多·範羅蘇姆GuidovanRossum
吉多·範羅蘇姆是一名荷蘭計算機程式設計師,他作為Python程式設計語言的作者而為人們熟知。在Python社群,吉多·範羅蘇姆被人們認為是“仁慈的獨裁者(BDFL)”,意思是他仍然關注Python的開發程式,並在必要的時刻做出決定。
2002年,在比利時布魯塞爾舉辦的自由及開源軟體開發者歐洲會議上,吉多·範羅蘇姆獲得了由自由軟體基金會頒發的2001年自由軟體進步獎。2003年五月,吉多獲得了荷蘭UNIX使用者小組獎。2006年,他被美國計算機協會(ACM)認定為著名工程師。
二、需要理解的一些概念
1、C語言編譯完就是機器碼,機器碼可以直接在處理器上執行。
2、CPU可以直接讀取機器碼。
3、Python是用C寫的。
4、Python直譯器會把程式碼內容讀到記憶體裡,通過Python直譯器翻譯成位元組碼。
5、CPU不能直接讀取位元組碼,需要把位元組碼轉換成機器碼。
anyway,so
Python對於C來說,就多了一個位元組碼轉換成機器碼的過程,所以相對會慢。但是人為是無法感知的。
三、python排名
排名文章來源: http://www.oschina.net/news/75895/tiobe-2016-8
程式語言排行榜 TOP 20 榜單:
前 10 名程式語言長期走勢圖:
由上圖可見,Python整體呈上升趨勢,反映出Python應用越來越廣泛並且也逐漸得到業內的認可!!!
Python可以應用於眾多領域,如:資料分析、元件整合、網路服務、影像處理、數值計算和科學計算等眾多領域。目前業內幾乎所有大中型網際網路企業都在使用Python,如:Youtube、Dropbox、BT、Quora(中國知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、騰訊、汽車之家、美團等。
目前Python主要應用領域:
- 雲端計算: 雲端計算最火的語言, 典型應用OpenStack
- WEB開發: 眾多優秀的WEB框架,眾多大型網站均為Python開發,Youtube, Dropbox, 豆瓣。。。, 典型WEB框架有Django
- 科學運算、人工智慧: 典型庫NumPy, SciPy, Matplotlib, Enthought librarys,pandas
- 系統運維: 運維人員必備語言
- 金融:量化交易,金融分析,在金融工程領域,Python不但在用,且用的最多,而且重要性逐年提高。原因:作為動態語言的Python,語言結構清晰簡單,庫豐富,成熟穩定,科學計算和統計分析都很牛逼,生產效率遠遠高於c,c++,java,尤其擅長策略回測
- 圖形GUI: PyQT, WxPython,TkInter
Python在一些公司的應用:
- 谷歌:Google App Engine 、code.google.com 、Google earth 、谷歌爬蟲、Google廣告等專案都在大量使用Python開發
- CIA: 美國中情局網站就是用Python開發的
- NASA: 美國航天局(NASA)大量使用Python進行資料分析和運算
- YouTube:世界上最大的視訊網站YouTube就是用Python開發的
- Dropbox:美國最大的線上雲端儲存網站,全部用Python實現,每天網站處理10億個檔案的上傳和下載
- Instagram:美國最大的圖片分享社交網站,每天超過3千萬張照片被分享,全部用python開發
- Facebook:大量的基礎庫均通過Python實現的
- Redhat: 世界上最流行的Linux發行版本中的yum包管理工具就是用python開發的
- 豆瓣: 公司幾乎所有的業務均是通過Python開發的
- 知乎: 國內最大的問答社群,通過Python開發(國外Quora)
- 春雨醫生:國內知名的線上醫療網站是用Python開發的
- 除上面之外,還有搜狐、金山、騰訊、盛大、網易、百度、阿里、淘寶 、土豆、新浪、果殼等公司都在使用Python完成各種各樣的任務。
四、Python優缺點
優點
- Python的定位是“優雅”、“明確”、“簡單”,所以Python程式看上去總是簡單易懂,初學者學Python,不但入門容易,而且將來深入下去,可以編寫那些非常非常複雜的程式。
- 開發效率非常高,Python有非常強大的第三方庫,基本上你想通過計算機實現任何功能,Python官方庫裡都有相應的模組進行支援,直接下載呼叫後,在基礎庫的基礎上再進行開發,大大降低開發週期,避免重複造輪子。
- 高階語言————當你用Python語言編寫程式的時候,你無需考慮諸如如何管理你的程式使用的記憶體一類的底層細節
- 可移植性————由於它的開源本質,Python已經被移植在許多平臺上(經過改動使它能夠工 作在不同平臺上)。如果你小心地避免使用依賴於系統的特性,那麼你的所有Python程式無需修改就幾乎可以在市場上所有的系統平臺上執行
- 可擴充套件性————如果你需要你的一段關鍵程式碼執行得更快或者希望某些演算法不公開,你可以把你的部分程式用C或C++編寫,然後在你的Python程式中使用它們。
- 可嵌入性————你可以把Python嵌入你的C/C++程式,從而向你的程式使用者提供指令碼功能。
缺點:
- 速度慢,Python 的執行速度相比C語言確實慢很多,跟JAVA相比也要慢一些,因此這也是很多所謂的大牛不屑於使用Python的主要原因,但其實這裡所指的執行速度慢在大多數情況下使用者是無法直接感知到的,必須藉助測試工具才能體現出來,比如你用C運一個程式花了0.1s,用Python是0.01s,這樣C語言直接比Python快了10s,算是非常誇張了,但是你是無法直接通過肉眼感知的,因為一個正常人所能感知的時間最小單位是0.15-0.4s左右,哈哈。其實在大多數情況下Python已經完全可以滿足你對程式速度的要求,除非你要寫對速度要求極高的搜尋引擎等,這種情況下,當然還是建議你用C去實現的。
- 程式碼不能加密,因為PYTHON是解釋性語言,它的原始碼都是以名文形式存放的,不過我不認為這算是一個缺點,如果你的專案要求原始碼必須是加密的,那你一開始就不應該用Python來去實現。
- 執行緒不能利用多CPU問題,這是Python被人詬病最多的一個缺點,GIL即全域性直譯器鎖(Global Interpreter Lock),是計算機程式設計語言直譯器用於同步執行緒的工具,使得任何時刻僅有一個執行緒在執行,Python的執行緒是作業系統的原生執行緒。在Linux上為pthread,在Windows上為Win thread,完全由作業系統排程執行緒的執行。一個python直譯器程式內有一條主執行緒,以及多條使用者程式的執行執行緒。即使在多核CPU平臺上,由於GIL的存在,所以禁止多執行緒的並行執行。關於這個問題的折衷解決方法,我們在以後執行緒和程式章節裡再進行詳細探討。
開發:
開發語言:
高階語言:Python Java、PHP C# Go ruby C++... ===》 位元組碼
低階語言:C、彙編 ===》 機器碼
語言之間的對比:
- PHP類:適用於寫網頁,侷限性
- Python Java: 及可以寫網頁 也可以寫後臺功能
- Python執行效率低,開發效率高
- Java執行效率高, 開發效率低
Python種類:
- JPython
- IronPython
- JavaScriptPython
- RubyPython
- CPython
- pypy 這是用CPython開發的Python
Python 2 and 3 的區別
In summary : Python 2.x is legacy, Python 3.x is the present and future of the language
Python 3.0 was released in 2008. The final 2.x version 2.7 release came out in mid-2010, with a statement of
extended support for this end-of-life release. The 2.x branch will see no new major releases after that. 3.x is
under active development and has already seen over five years of stable releases, including version 3.3 in 2012,
3.4 in 2014, and 3.5 in 2015. This means that all recent standard library improvements, for example, are only
available by default in Python 3.x.
Guido van Rossum (the original creator of the Python language) decided to clean up Python 2.x properly, with less regard for backwards compatibility than is the case for new releases in the 2.x range. The most drastic improvement is the better Unicode support (with all text strings being Unicode by default) as well as saner bytes/Unicode separation.
Besides, several aspects of the core language (such as print and exec being statements, integers using floor division) have been adjusted to be easier for newcomers to learn and to be more consistent with the rest of the language, and old cruft has been removed (for example, all classes are now new-style, "range()" returns a memory efficient iterable, not a list as in 2.x).
version | 2.x | 3.x |
print""或者print()列印都可以正常輸出 |
只能print()這種形式列印,否則會出現 SyntaxError型別錯誤 |
|
input raw_input |
input:輸出原生的資料型別,輸出什麼型別的值,就輸出什麼型別 raw_input:全部以字串形式輸出 |
3.x版本取消了raw_input方法,只能使用input方式提示輸入字串,該方法和2.x版本的raw_input()相同 如果想要實現與2.x input()輸出原生資料型別值,可以使用eval(input()) |
class | 2.x支援新式類和經典類,使用新式類時,類繼承順序會影響最終繼承的結果 | 必須使用新式類,解決了類之間繼承順序的問題 |
/ | 例如:1/2 2.x輸出的值為0 | 例如:1/2 3.x輸入的值為0.5 |
ps:
Python2
[root@python2 scripts]# cat hello.py
print "Hello World !"
Python3
[root@python-3 scripts]# cat hello.py
#!/usr/bin/env python
print("Hello World!")