-
一、python介紹
創(chuàng)始人
python的創(chuàng)始人為吉多·范羅蘇姆(Guido van Rossum)。1989年的圣誕節(jié)期間,吉多·范羅蘇姆為了在阿姆斯特丹打發(fā)時間,決心開發(fā)一個新的腳本解釋程序,作為ABC語言的一種繼承。
Python可以應用于眾多領域,如:數(shù)據(jù)分析、組件集成、網(wǎng)絡服務、圖像處理、數(shù)值計算和科學計算等眾多領域。目前業(yè)內幾乎所有大中型互聯(lián)網(wǎng)企業(yè)都在使用Python,如:Youtube、Dropbox、BT、Quora(知乎就是模仿它的)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、騰訊、汽車之家、美團等。目前Python主要應用領域:
云計算: 云計算最火的語言, 典型應用OpenStack
WEB開發(fā): 眾多優(yōu)秀的WEB框架,眾多大型網(wǎng)站均為Python開發(fā),Youtube, Dropbox, 豆瓣。。。, 典型WEB框架有Django
科學運算、人工智能: 典型庫NumPy, SciPy, Matplotlib, Enthought librarys,pandas
系統(tǒng)運維: 運維人員必備語言
金融:量化交易,金融分析,在金融工程領域,Python不但在用,且用的最多,而且重要性逐年提高。原因:作為動態(tài)語言的Python,語言結構清晰簡單,庫豐富,成熟穩(wěn)定,科學計算和統(tǒng)計分析都很牛逼,生產(chǎn)效率遠遠高于c,c++,java,尤其擅長策略回測
圖形GUI: PyQT, WxPython,TkInterPython在一些公司的應用:
谷歌:Google App Engine 、code.google.com 、Google earth 、谷歌爬蟲、Google廣告等項目都在大量使用Python開發(fā)
CIA: 美國中情局網(wǎng)站就是用Python開發(fā)的
NASA: 美國航天局(NASA)大量使用Python進行數(shù)據(jù)分析和運算
YouTube:世界上最大的視頻網(wǎng)站YouTube就是用Python開發(fā)的
Dropbox:美國最大的在線云存儲網(wǎng)站,全部用Python實現(xiàn),每天網(wǎng)站處理10億個文件的上傳和下載
Instagram:美國最大的圖片分享社交網(wǎng)站,每天超過3千萬張照片被分享,全部用python開發(fā)
Facebook:大量的基礎庫均通過Python實現(xiàn)的
Redhat: 世界上最流行的Linux發(fā)行版本中的yum包管理工具就是用python開發(fā)的
豆瓣: 公司幾乎所有的業(yè)務均是通過Python開發(fā)的
知乎: 國內最大的問答社區(qū),通過Python開發(fā)(國外Quora)
春雨醫(yī)生:國內知名的在線醫(yī)療網(wǎng)站是用Python開發(fā)的
除上面之外,還有搜狐、金山、騰訊、盛大、網(wǎng)易、百度、阿里、淘寶 、土豆、新浪、果殼等公司都在使用Python完成各種各樣的任務。
-
二、Python 是一門什么樣的語言?
python是一門動態(tài)解釋性的強類型定義語言。-
編譯型與解釋型
編譯是將源程序翻譯成可執(zhí)行的目標代碼,翻譯與執(zhí)行是分開的;而解釋是對源程序的翻譯與執(zhí)行一次性完成,不生成可存儲的目標代碼。這只是表象,二者背后的最大區(qū)別是:對解釋執(zhí)行而言,程序運行時的控制權在解釋器而不在用戶程序;對編譯執(zhí)行而言,運行時的控制權在用戶程序。
解釋具有良好的動態(tài)特性和可移植性,比如在解釋執(zhí)行時可以動態(tài)改變變量的類型、對程序進行修改以及在程序中插入良好的調試診斷信息等,而將解釋器移植到不同的系統(tǒng)上,則程序不用改動就可以在移植了解釋器的系統(tǒng)上運行。同時解釋器也有很大的缺點,比如執(zhí)行效率低,占用空間大,因為不僅要給用戶程序分配空間,解釋器本身也占用了寶貴的系統(tǒng)資源。
編譯器是把源程序的每一條語句都編譯成機器語言,并保存成二進制文件,這樣運行時計算機可以直接以機器語言來運行此程序,速度很快;
而解釋器則是只在執(zhí)行程序時,才一條一條的解釋成機器語言給計算機來執(zhí)行,所以運行速度是不如編譯后的程序運行的快的.
編譯型- 優(yōu)點:編譯器一般會有預編譯的過程對代碼進行優(yōu)化。因為編譯只做一次,運行時不需要編譯,所以編譯型語言的程序執(zhí)行效率高。可以脫離語言環(huán)境獨立運行。
- 缺點:編譯之后如果需要修改就需要整個模塊重新編譯。編譯的時候根據(jù)對應的運行環(huán)境生成機器碼,不同的操作系統(tǒng)之間移植就會有問題,需要根據(jù)運行的操作系統(tǒng)環(huán)境編譯不同的可執(zhí)行文件。
解釋型 - 優(yōu)點:有良好的平臺兼容性,在任何環(huán)境中都可以運行,前提是安裝了解釋器(虛擬機)。靈活,修改代碼的時候直接修改就可以,可以快速部署,不用停機維護。
缺點:每次運行的時候都要解釋一遍,性能上不如編譯型語言。
-
動態(tài)語言和靜態(tài)語言
通常我們所說的動態(tài)語言、靜態(tài)語言是指動態(tài)類型語言和靜態(tài)類型語言。- (1)動態(tài)類型語言:動態(tài)類型語言是指在運行期間才去做數(shù)據(jù)類型檢查的語言,也就是說,在用動態(tài)類型的語言編程時,永遠也不用給任何變量指定數(shù)據(jù)類型,該語言會在你第一次賦值給變量時,在內部將數(shù)據(jù)類型記錄下來。Python和Ruby就是一種典型的動態(tài)類型語言,其他的各種腳本語言如VBScript也多少屬于動態(tài)類型語言。
- (2)靜態(tài)類型語言:靜態(tài)類型語言與動態(tài)類型語言剛好相反,它的數(shù)據(jù)類型是在編譯其間檢查的,也就是說在寫程序時要聲明所有變量的數(shù)據(jù)類型,C/C++是靜態(tài)類型語言的典型代表,其他的靜態(tài)類型語言還有C#、JAVA等。
-
強類型定義語言和弱類型定義語言
強類型定義語言在速度上可能略遜色于弱類型定義語言,但是強類型定義語言帶來的嚴謹性能夠有效的避免許多錯誤。另外,“這門語言是不是動態(tài)語言”與“這門語言是否類型安全”之間是完全沒有聯(lián)系的!
例如:Python是動態(tài)語言,是強類型定義語言(類型安全的語言); VBScript是動態(tài)語言,是弱類型定義語言(類型不安全的語言); JAVA是靜態(tài)語言,是強類型定義語言(類型安全的語言)。- (1)強類型定義語言:強制數(shù)據(jù)類型定義的語言。也就是說,一旦一個變量被指定了某個數(shù)據(jù)類型,如果不經(jīng)過強制轉換,那么它就永遠是這個數(shù)據(jù)類型了。舉個例子:如果你定義了一個整型變量a,那么程序根本不可能將a當作字符串類型處理。強類型定義語言是類型安全的語言。
- (2)弱類型定義語言:數(shù)據(jù)類型可以被忽略的語言。它與強類型定義語言相反, 一個變量可以賦不同數(shù)據(jù)類型的值。
-
-
三、Python的優(yōu)缺點
先看優(yōu)點
Python的定位是“優(yōu)雅”、“明確”、“簡單”,所以Python程序看上去總是簡單易懂,初學者學Python,不但入門容易,而且將來深入下去,可以編寫那些非常非常復雜的程序。
開發(fā)效率非常高,Python有非常強大的第三方庫,基本上你想通過計算機實現(xiàn)任何功能,Python官方庫里都有相應的模塊進行支持,直接下載調用后,在基礎庫的基礎上再進行開發(fā),大大降低開發(fā)周期,避免重復造輪子。
高級語言————當你用Python語言編寫程序的時候,你無需考慮諸如如何管理你的程序使用的內存一類的底層細節(jié)
可移植性————由于它的開源本質,Python已經(jīng)被移植在許多平臺上(經(jīng)過改動使它能夠工 作在不同平臺上)。如果你小心地避免使用依賴于系統(tǒng)的特性,那么你的所有Python程序無需修改就幾乎可以在市場上所有的系統(tǒng)平臺上運行
可擴展性————如果你需要你的一段關鍵代碼運行得更快或者希望某些算法不公開,你可以把你的部分程序用C或C++編寫,然后在你的Python程序中使用它們。
可嵌入性————你可以把Python嵌入你的C/C++程序,從而向你的程序用戶提供腳本功能。再看缺點:
速度慢,Python 的運行速度相比C語言確實慢很多,跟JAVA相比也要慢一些,因此這也是很多所謂的大牛不屑于使用Python的主要原因,但其實這里所指的運行速度慢在大多數(shù)情況下用戶是無法直接感知到的,必須借助測試工具才能體現(xiàn)出來,比如你用C運一個程序花了0.01s,用Python是0.1s,這樣C語言直接比Python快了10倍,算是非常夸張了,但是你是無法直接通過肉眼感知的,因為一個正常人所能感知的時間最小單位是0.15-0.4s左右,哈哈。其實在大多數(shù)情況下Python已經(jīng)完全可以滿足你對程序速度的要求,除非你要寫對速度要求極高的搜索引擎等,這種情況下,當然還是建議你用C去實現(xiàn)的。
代碼不能加密,因為PYTHON是解釋性語言,它的源碼都是以名文形式存放的,不過我不認為這算是一個缺點,如果你的項目要求源代碼必須是加密的,那你一開始就不應該用Python來去實現(xiàn)。
線程不能利用多CPU問題,這是Python被人詬病最多的一個缺點,GIL即全局解釋器鎖(Global Interpreter Lock),是計算機程序設計語言解釋器用于同步線程的工具,使得任何時刻僅有一個線程在執(zhí)行,Python的線程是操作系統(tǒng)的原生線程。在Linux上為pthread,在Windows上為Win thread,完全由操作系統(tǒng)調度線程的執(zhí)行。一個python解釋器進程內有一條主線程,以及多條用戶程序的執(zhí)行線程。即使在多核CPU平臺上,由于GIL的存在,所以禁止多線程的并行執(zhí)行。關于這個問題的折衷解決方法,我們在以后線程和進程章節(jié)里再進行詳細探討。
當然,Python還有一些其它的小缺點,在這就不一一列舉了,我想說的是,任何一門語言都不是完美的,都有擅長和不擅長做的事情,建議各位不要拿一個語言的劣勢去跟另一個語言的優(yōu)勢來去比較,語言只是一個工具,是實現(xiàn)程序設計師思想的工具,就像我們之前中學學幾何時,有的時候需要要圓規(guī),有的時候需要用三角尺一樣,拿相應的工具去做它最擅長的事才是正確的選擇。
-
四、Python安裝
-
windows
- 1、下載安裝包
https://www.python.org/downloads/ - 2、安裝
默認安裝路徑:C:\python27 - 3、配置環(huán)境變量
【右鍵計算機】--》【屬性】--》【高級系統(tǒng)設置】--》【高級】--》【環(huán)境變量】--》【在第二個內容框中找到 變量名為Path 的一行,雙擊】 --> 【Python安裝目錄追加到變值值中,用 ; 分割】
如:原來的值;C:\python27,切記前面有分號
- 1、下載安裝包
-
linux、Mac
- 無需安裝,原裝Python環(huán)境
ps:如果自帶2.6,請更新至2.7
- 無需安裝,原裝Python環(huán)境
-