Python前世此生html
python的創始人爲吉多·範羅蘇姆(Guido van Rossum)。1989年的聖誕節期間,吉多·範羅蘇姆爲了在阿姆斯特丹打發時間,決心開發一個新的腳本解釋程序,做爲ABC語言的一種繼承。 python
最新的TIOBE排行榜,Python趕超PHP佔據第五!!!linux
由上圖可見,Python總體呈上升趨勢,反映出Python應用愈來愈普遍而且也逐漸獲得業內的承認!!!程序員
Python能夠應用於衆多領域,如:數據分析、組件集成、網絡服務、圖像處理、數值計算和科學計算等衆多領域。目前業內幾乎全部大中型互聯網企業都在使用Python,如:Youtube、Dropbox、BT、Quora(中國知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、騰訊、汽車之家、美團等。互聯網公司普遍使用Python來作的事通常有:自動化運維、自動化測試、大數據分析、爬蟲、Web 等。shell
注視:上述重點字體表示該公司主要使用Python語言開發windows
爲何是Python而不是其餘語言?數組
C 和 Python、Java、C#等網絡
C語言: 代碼編譯獲得 機器碼 ,機器碼在處理器上直接執行,每一條指令控制CPU工做運維
其餘語言: 代碼編譯獲得 字節碼 ,虛擬機執行字節碼並轉換成機器碼再後在處理器上執行python2.7
Python 和 C Python這門語言是由C開發而來
對於使用:Python的類庫齊全而且使用簡潔,若是要實現一樣的功能,Python 10行代碼能夠解決,C可能就須要100行甚至更多.
對於速度:Python的運行速度相較與C,絕逼是慢了
Python 和 Java、C#等
對於使用:Linux原裝Python,其餘語言沒有;以上幾門語言都有很是豐富的類庫支持
對於速度:Python在速度上可能稍顯遜色
因此,Python和其餘語言沒有什麼本質區別,其餘區別在於:擅長某領域、人才豐富、先入爲主。
Python的種類
以上除PyPy以外,其餘的Python的對應關係和執行流程以下:
PyPy,在Python的基礎上對Python的字節碼進一步處理,從而提高執行速度!
安裝Python
windows: 一、下載安裝包 https://www.python.org/downloads/ 二、安裝 默認安裝路徑:C:\python27 三、配置環境變量 【右鍵計算機】--》【屬性】--》【高級系統設置】--》【高級】--》【環境變量】--》【在第二個內容框中找到 變量名爲Path 的一行,雙擊】 --> 【Python安裝目錄追加到變值值中,用 ; 分割】 如:原來的值;C:\python27,切記前面有分號
linux: 無需安裝,原裝Python環境 ps:若是自帶2.6,請更新至2.7
更新Python
windows: 卸載重裝便可 linux: Linux的yum依賴自帶Python,爲防止錯誤,此處更新其實就是再安裝一個Python 查看默認Python版本 python -V 一、安裝gcc,用於編譯Python源碼 yum install gcc 二、下載源碼包,https://www.python.org/ftp/python/ 三、解壓並進入源碼文件 四、編譯安裝 ./configure make all make install 五、查看版本 /usr/local/bin/python2.7 -V 六、修改默認Python版本 mv /usr/bin/python /usr/bin/python2.6 ln -s /usr/local/bin/python2.7 /usr/bin/python 七、防止yum執行異常,修改yum使用的Python版本 vi /usr/bin/yum 將頭部 #!/usr/bin/python 修改成 #!/usr/bin/python2.6
在 /home/dev/ 目錄下建立 hello.py 文件,內容以下:
print "hello,world"
執行 hello.py 文件,即: python /home/dev/hello.py
python內部執行過程以下:
2、解釋器
上一步中執行 python /home/dev/hello.py 時,明確的指出 hello.py 腳本由 python 解釋器來執行。
若是想要相似於執行shell腳本同樣執行python腳本,例: ./hello.py
,那麼就須要在 hello.py 文件的頭部指定解釋器,以下:
#!/usr/bin/env python print "hello,world"
如此一來,執行: ./hello.py
便可。
ps:執行前需給予 hello.py 執行權限,chmod 755 hello.py
3、內容編碼
python解釋器在加載 .py 文件中的代碼時,會對內容進行編碼(默認ascill)
ASCII(American Standard Code for Information Interchange,美國標準信息交換代碼)是基於拉丁字母的一套電腦編碼系統,主要用於顯示現代英語和其餘西歐語言,其最多隻能用 8 位來表示(一個字節),即:2**8 = 256,因此,ASCII碼最多隻能表示 256 個符號。
顯然ASCII碼沒法將世界上的各類文字和符號所有表示,因此,就須要新出一種能夠表明全部字符和符號的編碼,即:Unicode
Unicode(統一碼、萬國碼、單一碼)是一種在計算機上使用的字符編碼。Unicode 是爲了解決傳統的字符編碼方案的侷限而產生的,它爲每種語言中的每一個字符設定了統一而且惟一的二進制編碼,規定雖有的字符和符號最少由 16 位來表示(2個字節),即:2 **16 = 65536,
注:此處說的的是最少2個字節,可能更多
UTF-8,是對Unicode編碼的壓縮和優化,他再也不使用最少使用2個字節,而是將全部的字符和符號進行分類:ascii碼中的內容用1個字節保存、歐洲的字符用2個字節保存,東亞的字符用3個字節保存...
因此,python解釋器在加載 .py 文件中的代碼時,會對內容進行編碼(默認ascill),若是是以下代碼的話:
報錯:ascii碼沒法表示中文
#!/usr/bin/env python print "你好,世界"
改正:應該顯示的告訴python解釋器,用什麼編碼來執行源代碼,即:
#!/usr/bin/env python # -*- coding: utf-8 -*- print "你好,世界"
4、註釋
當行注視:# 被註釋內容
多行註釋:""" 被註釋內容 """
5、執行腳本傳入參數
Python有大量的模塊,從而使得開發Python程序很是簡潔。類庫有包括三中:
Python內部提供一個 sys 的模塊,其中的 sys.argv 用來捕獲執行執行python腳本時傳入的參數
#!/usr/bin/env python # -*- coding: utf-8 -*- import sys print sys.argv
6、 pyc 文件
執行Python代碼時,若是導入了其餘的 .py 文件,那麼,執行過程當中會自動生成一個與其同名的 .pyc 文件,該文件就是Python解釋器編譯以後產生的字節碼。
ps:代碼通過編譯能夠產生字節碼;字節碼經過反編譯也能夠獲得代碼。
7、變量
一、聲明變量
#!/usr/bin/env python # -*- coding: utf-8 -*- name = "wupeiqi"
上述代碼聲明瞭一個變量,變量名爲: name,變量name的值爲:"wupeiqi"
變量的做用:暱稱,其代指內存裏某個地址中保存的內容
變量定義的規則:
二、變量的賦值
#!/usr/bin/env python # -*- coding: utf-8 -*- name1 = "wupeiqi" name2 = "alex"
#!/usr/bin/env python # -*- coding: utf-8 -*- name1 = "wupeiqi" name2 = name1
8、輸入
#!/usr/bin/env python # -*- coding: utf-8 -*- # 將用戶輸入的內容賦值給 name 變量 name = raw_input("請輸入用戶名:") # 打印輸入的內容 print name
輸入密碼時,若是想要不可見,須要利用getpass 模塊中的 getpass方法,即:
#!/usr/bin/env python # -*- coding: utf-8 -*- import getpass # 將用戶輸入的內容賦值給 name 變量 pwd = getpass.getpass("請輸入密碼:") # 打印輸入的內容 print pwd
9、流程控制和縮進
需求1、用戶登錄驗證
# 提示輸入用戶名和密碼 # 驗證用戶名和密碼 # 若是錯誤,則輸出用戶名或密碼錯誤 # 若是成功,則輸出 歡迎,XXX!
#!/usr/bin/env python # -*- coding: encoding -*- import getpass name = raw_input('請輸入用戶名:') pwd = getpass.getpass('請輸入密碼:') if name == "alex" and pwd == "cmd": print "歡迎,alex!" else: print "用戶名和密碼錯誤"
需求2、根據用戶輸入內容輸出其權限
# 根據用戶輸入內容打印其權限 # alex --> 超級管理員 # eric --> 普通管理員 # tony --> 業務主管 # 其餘 --> 普通用戶
#!/usr/bin/env python # -*- coding: encoding -*- name = raw_input('請輸入用戶名:') if name == "alex": print "超級管理員" elif name == "eric": print "普通管理員" elif name == "tony": print "業務主管" else: print "普通用戶"
2 是一個整數的例子。
長整數 不過是大一些的整數。
3.23和52.3E-4是浮點數的例子。E標記表示10的冪。在這裏,52.3E-4表示52.3 * 10-4。
(-5+4j)和(2.3-4.6j)是複數的例子。
int(整型)
"hello world"
name = "alex" print "i am %s " % name #輸出: i am alex
PS: 字符串是 %s;整數 %d;浮點數%f
字符串經常使用功能:name_list = ['alex', 'seven', 'eric'] 或 name_list = list(['alex', 'seven', 'eric'])
基本操做:
ages = (11, 22, 33, 44, 55)
或
ages = tuple((11, 22, 33, 44, 55))
person = {"name": "mr.wu", 'age': 18} 或 person = dict({"name": "mr.wu", 'age': 18})
經常使用操做:
讀取文件的內容:
# 一次性加載全部內容到內存 obj.read() # 一次性加載全部內容到內存,並根據行分割成字符串 obj.readlines() # 每次僅讀取一行數據 for line in obj: print line
寫文件的內容:
obj.write('內容')
關閉文件句柄:
obj.close()