python的創始人爲吉多·範羅蘇姆(Guido van Rossum)。1989年的聖誕節期間,吉多·範羅蘇姆爲了在阿姆斯特丹打發時間,決心開發一個新的腳本解釋程序,做爲ABC語言的一種繼承。html
Python是一款純粹的自由軟件,源代碼和解釋器CPython都遵循了GPL(GNU General Public License)協議。java
Python語法清晰簡潔,最有特點的是用空白符做爲語句的縮進。python
Python具備強大而豐富的類庫,也常常被別人說是膠水語言,能夠跟其它語言(c/c++)寫的模塊結合在一塊兒。常見的狀況是使用Python快速生成程序的原型,而後有一部分須要有特別高的要求,須要其它語言改寫。例如3D遊戲中的圖形渲染須要用到C/C++編寫,而後封裝成.py擴展類庫由Python調用。須要注意的使用擴展類型須要考慮跨平臺性。c++
由上圖可見,Python總體呈上升趨勢,反映出Python應用愈來愈普遍而且也逐漸獲得業內的承認!!!瀏覽器
Python能夠應用於衆多領域,如:數據分析、組件集成、網絡服務、圖像處理、數值計算和科學計算等衆多領域。目前業內幾乎全部大中型互聯網企業都在使用Python,如:Youtube、Dropbox、BT、Quora(中國知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、騰訊、汽車之家、美團等。網絡
目前Python主要應用領域:框架
Python在一些公司的應用: 運維
編譯型是把源程序的每一條語句都編譯成機器語言,並保存成二進制文件,這樣運行時計算機能夠直接以機器語言來運行此程序,速度很快;函數
解釋型則是隻在執行程序時,才一條一條的解釋成機器語言給計算機來執行,因此運行速度是不如編譯後的程序運行的快的. 這是由於計算機不能直接認識並執行咱們寫的語句,它只能認識機器語言(是二進制的形式)工具
意思是說,解釋型語言式一條一條的解釋,編譯型語言是一次性編譯
編譯型
優勢:編譯器通常會有預編譯的過程對代碼進行優化。由於編譯只作一次,運行時不須要編譯,因此編譯型語言的程序執行效率高。能夠脫離語言環境獨立運行。
缺點:編譯以後若是須要修改就須要整個模塊從新編譯。編譯的時候根據對應的運行環境生成機器碼,不一樣的操做系統之間移植就會有問題,須要根據運行的操做系統環境編譯不一樣的可執行文件。
解釋型
優勢:有良好的平臺兼容性,在任何環境中均可以運行,前提是安裝瞭解釋器(虛擬機)。靈活,修改代碼的時候直接修改就能夠,能夠快速部署,不用停機維護。
缺點:每次運行的時候都要解釋一遍,性能上不如編譯型語言。
區別
CPython
當咱們從Python官方網站下載並安裝好Python 2.7後,咱們就直接得到了一個官方版本的解釋器:CPython。這個解釋器是用C語言開發的,因此叫CPython。在命令行下運行python
就是啓動CPython解釋器。
CPython是使用最廣的Python解釋器。教程的全部代碼也都在CPython下執行。
IPython
IPython是基於CPython之上的一個交互式解釋器,也就是說,IPython只是在交互方式上有所加強,可是執行Python代碼的功能和CPython是徹底同樣的。比如不少國產瀏覽器雖然外觀不一樣,但內核其實都是調用了IE。
CPython用>>>
做爲提示符,而IPython用In [
序號
]:
做爲提示符。
PyPy
PyPy是另外一個Python解釋器,它的目標是執行速度。PyPy採用JIT技術,對Python代碼進行動態編譯(注意不是解釋),因此能夠顯著提升Python代碼的執行速度。
絕大部分Python代碼均可以在PyPy下運行,可是PyPy和CPython有一些是不一樣的,這就致使相同的Python代碼在兩種解釋器下執行可能會有不一樣的結果。若是你的代碼要放到PyPy下執行,就須要瞭解PyPy和CPython的不一樣點。
Jython
Jython是運行在Java平臺上的Python解釋器,能夠直接把Python代碼編譯成Java字節碼執行。
IronPython
IronPython和Jython相似,只不過IronPython是運行在微軟.Net平臺上的Python解釋器,能夠直接把Python代碼編譯成.Net的字節碼。
速度對比
Python的3.0版本,常被稱爲Python 3000,或簡稱Py3k。相對於Python的早期版本,這是一個較大的升級。爲了避免帶入過多的累贅,Python 3.0在設計的時候沒有考慮向下相容。
許多針對早期Python版本設計的程式都沒法在Python 3.0上正常執行。
爲了照顧現有程式,Python 2.6做爲一個過渡版本,基本使用了Python 2.x的語法和庫,同時考慮了向Python 3.0的遷移,容許使用部分Python 3.0的語法與函數。新的Python程式建議使用Python 3.0版本的語法。
除非執行環境沒法安裝Python 3.0或者程式自己使用了不支援Python 3.0的第三方庫。目前不支援Python 3.0的第三方庫有Twisted, py2exe, PIL等。
大多數第三方庫都正在努力地相容Python 3.0版本。即便沒法當即使用Python 3.0,也建議編寫相容Python 3.0版本的程式,而後使用Python 2.6, Python 2.7來執行。
新創建一個.py的文件而後編輯內容
print "hello,world"
就是在頁面上顯示hello world
python內部執行過程以下:
python解釋器在加載 .py 文件中的代碼時,會對內容進行編碼(默認ascill)
ASCII(American Standard Code for Information Interchange,美國標準信息交換代碼)是基於拉丁字母的一套電腦編碼系統,主要用於顯示現代英語和其餘西歐語言,其最多隻能用 8 位來表示(一個字節),即:2**8 = 256,因此,ASCII碼最多隻能表示 256 個符號。
Unicode(統一碼、萬國碼、單一碼)是一種在計算機上使用的字符編碼。Unicode 是爲了解決傳統的字符編碼方案的侷限而產生的,它爲每種語言中的每一個字符設定了統一而且惟一的二進制編碼,規定雖有的字符和符號最少由 16 位來表示(2個字節),即:2 **16 = 65536,
注:此處說的的是最少2個字節,可能更多
UTF-8,是對Unicode編碼的壓縮和優化,他再也不使用最少使用2個字節,而是將全部的字符和符號進行分類:ascii碼中的內容用1個字節保存、歐洲的字符用2個字節保存,東亞的字符用3個字節保存...
因此,python解釋器在加載 .py 文件中的代碼時,py2默認用ASCLL,py3默認用UTF-8
name = input("你的名字:")
print(name)
輸入密碼時,若是想要不可見,須要利用getpass 模塊中的 getpass方法,即:
import getpass
val = input('請輸入用戶名:')
#val_pwd=input('請輸入密碼:')
pwd = getpass.getpass("請輸入密碼:")#暗密,不能在IDE中運行
print(val,pwd)
變量定義的規則:
int(整型)
a = 'sss'
print(type(a))
九、 表達式條件判斷
例子:
1.頁面顯示:請輸入用戶名
2.頁面顯示:請輸入密碼
3.若是用戶名等於「alex」而且密碼等於「boy」則成功
username = input("請輸入用戶名")
password = input("請輸入密碼")
if username == "alex" and password == "boy":
print('登陸成功')
else:
print('登陸失敗')
多條件判斷
user=input('請輸入用戶名:')
if user == 'alex':
print('超級大boy')
elif user == 'oldboy':
print('超級大老闆')
elif user == 'eric':
print('超級大boss')
else:
print('普通用戶')
print('結束')
條件嵌套
msg = """
歡迎致電10086
1,查詢話費
2,查水錶
3,人工服務
"""
print(msg)
choice = input("請選擇您所須要的服務")
if choice == "1":
print("1.查詢話費;2.查詢他人手機;3.查詢座機")
search_type = input("請輸入要查詢的類型:")
if search_type == "1":
print('查詢本機')
elif search_type == "2":
print("查詢他人手機")
elif search_type == "3":
print("查詢座機")
else:
print("輸入錯誤")
elif choice == "2":
print("查水錶")
elif choice == "3":
print("人工服務")
else:
print("錯誤")
其中and爲邏輯運算
算數運算:
比較運算:
賦值運算:
成員運算:
身份運算:
位運算:
運算符優先級:
10、 表達式及循環語句
while True:
print('紅鯉魚與綠鯉魚與驢')
這樣的話就會變成死循環
所以能夠在while 中加入條件
如:
print3次紅鯉魚與綠鯉魚與驢後打印完成
timer = 0
while timer < 3:
print('紅鯉魚與綠鯉魚與驢')
timer = timer + 1
print('完成')
例子:
打印1-10
count =1 while count < 11: print(count) count = count + 1
break
在print結束後跳出循環體
while True: print('紅鯉魚與綠鯉魚與驢') break
continue
在循環中條件爲真,循環成立
這段代碼中,continue是跳出當前本次循環,因此條件成立變爲死循環
while True: print('sss') continue print('ooooo')
例子:
輸出1-10,break
count = 1 while True: print(count) count =count + 1 if count == 11: break
輸出1-10,其中不輸出7
count = 1 while count < 11: if count == 7: count = count + 1 continue print(count) count = count + 1
思路:
1,要1-10因此必須<11,而後判斷count是否等於7
2,等於7的時候跳出當次循環,注意,在count等於7的時候,必須count = count + 1,緣由是因,若是直接continue的話,那麼會夯住,只要到7就跳出
例如:
3,而後rount+1,最後打印
for i in range(1,101): if i % 2 ==1: print ("loop:",i) for i in range(100): if i < 50 or i > 70: print(i)
用for循環模擬用戶登陸器1
_user = 'alex' _passwd ='abc123' for i in range(3): username = input("Username:") password = input("password:") if username == _user and password == _passwd: print("Welcome %s login..."%_user) break #跳出,中斷 else: print("Invalid username or password !") else: print("要不要臉")
用for循環模擬用戶登陸器2
_user ="alex" _passwd = "abc123" passed_authentication = False #假,不成立 for i in range(3): username = input("Username:") password = input("Password:") if username == _user and password == _passwd : print("Welcome %s login...." % _user) passed_authentication = True #,真,成立 break #跳出,中斷 else: print("Invalid username or password !") if not passed_authentication:#只有在True的狀況下,條件成立 print("要不要臉,臭流氓啊")