人生苦短,我用python。看圖說話php
一.python簡介與發展:java
python 是一種面向對象的解釋性計算機程序設計語言。python
python由荷蘭人Guido van Rossum 於1989年發明。linux
1991年,第一個Python編譯器誕生。它是用C語言實現的,並可以調用C語言的庫文件。從一出生,Python已經具備了:類,函數,異常處理,包含表和詞典在內的核心數據類型,以及模塊爲基礎的拓展系統。git
1994年1月 python 1.0誕生,增長lambda,map,filter and reduceweb
1999年,python web的鼻祖 Zope 1 發佈正則表達式
2000年10月16號 ,python2.0誕生,加入內存回收機制,構成如今Python語言框架算法
2004年11月30號,python 2.4誕生,同年web框架django誕生。數據庫
2006年11月19號,python 2.5誕生django
2008年10月1號, python2.6誕生
2008年12月3號, python3.0誕生
2009年6月27號, python3.1誕生
2010年7月3號, python 2.7誕生
提示:因爲python2.6與3.0差距較大,因而推出過渡版本,並於2014年十一月,宣佈將支持Python 2.7至2020,並重申,將不會有2.8版本,用戶將移動到Python 3.4
2011年2月20號, python3.2誕生
2012年11月29號,python3.3誕生
2014年3月16號, python3.4誕生
2015年11月13號,python3.5誕生
二.目前python的主要應用領域:
雲計算:雲計算最火的語言,如:openstack
web開發:不少大型的網站均有python開發,如:Youtube,Dropbox,豆瓣等等,python的web框架:Django,flask
科學運算,人工智能:典型NumPy,SciPy, Matplotlib, Enthought librarys,pandas
運維:不會開發的運維,不是好運維,不會開發的運維,必將被淘汰
金融:量化交易,金融分析等等。。。
圖形GUI:PyQT, WxPython,TkInter
三.python主要應用的公司:
YouTube、Instagram、豆瓣、Google、Yahoo等,NASA(美國航空航天局)等等。。。
四.python的優缺點:
優勢:
1.Python的定位是「優雅」、「明確」、「簡單」,"易學",「免費」,「簡單」。
2.開發效率很是高,Python標準庫確實很龐大。它能夠幫助你處理各類工做,包括正則表達式、文檔生成、單元測試、線程、數據庫、網頁瀏覽器、 CGI、FTP、電子郵件、XML、XML-RPC、HTML、WAV文件、密碼系統、GUI(圖形用戶界面)、Tk和其餘與系統有關的操做。記住,只要 安裝了Python,全部這些功能都是可用的。這被稱做Python的「功能齊全」理念。除了標準庫之外,還有許多其餘高質量的庫,如wxPython、 Twisted和Python圖像庫等等。
3.高級語言————當你用Python語言編寫程序的時候,你無需考慮諸如如何管理你的程序使用的內存一類的底層細節
4.可移植性————因爲它的開源本質,Python已經被移植在許多平臺上(通過改動使它可以工做在不一樣平臺上)。若是你當心地避免使用依賴於系統的特性,那麼你的全部Python程序無需修改就幾乎能夠在市場上全部的系統平臺上運行
5.可擴展性————若是你須要你的一段關鍵代碼運行得更快或者但願某些算法不公開,你能夠把你的部分程序用C或C++編寫,而後在你的Python程序中使用它們。
6.可嵌入性————你能夠把Python嵌入你的C/C++程序,從而向你的程序用戶提供腳本功能。
7.Python確實是一種十分精彩又強大的語言。它合理地結合了高性能與使得編寫程序簡單有趣的特點。
8.規範的代碼。Python採用強制縮進的方式使得代碼具備極佳的可讀性。
五.python的種類:
1.Cpython:python的官網版本,使用C語言實現,使用最爲普遍,Cpython實現會將源文件(py文件)轉換成字節碼(pyc文件),而後運行在python虛擬機上。
2.Jython:python的java實現,Jython會將python代碼動態編譯成Java字節碼,而後在JVM上運行。
3.IronPython:python的C#實現,IronPython將Python代碼編譯成C#字節碼,而後在CLR上運行。(與Jython相似)
4.PyPy(特殊) Python實現的Python,將Python的字節碼字節碼再編譯成機器碼
5.RubyPython、Brython ...
六.python與其餘語言對比:
python與C對比:
python易學,易用,易懂。而且是一種腳本語言;python的類庫齊全而且簡單。
C語言:代碼編譯獲得機器碼,機器碼在處理器上直接執行,每一條指令控制CPU工做,與底層硬件打交道
Python 和 C Python這門語言是由C開發而來
對於使用:因爲Python的類庫齊全而且簡潔,若是要實現一樣的功能,Python 10行代碼能夠解決,C可能就須要100行甚至更多.
對於速度:Python的運行速度相較與C,很慢。
Python 和 C#對比:
python能夠跨平臺,可運行在linux、windows,osx等平臺。
python開源,c#則相反
對於使用:Linux原裝Python,其餘語言沒有;以上幾門語言都有很是豐富的類庫支持
對於速度:Python是解釋性語言,C#須要編譯,因此python運行要慢點
python與java對比:
開源方向來講,Python更有優點,Java(雖然最近Java已經開源了,但有一些開源協議上面的版權受限);
對於使用:Python更簡潔,Java過於龐大複雜(如Web服務器)
對於速度:於速度:Python是解釋性語言,java須要編譯,因此python運行要慢點
python與php對比:
Python的OO更加完善
Python能夠開發桌面應用程序
python與ruby perl對比:
與ruby不一樣,OOP對於Python是可選的,因此Python不會強制用戶選擇OOP開發
七:python安裝:
windows環境:
一、下載安裝包 https://www.python.org/downloads/ 二、安裝 默認安裝路徑:C:\python27 三、配置環境變量 【右鍵計算機】--》【屬性】--》【高級系統設置】--》【高級】--》【環境變量】--》【在第二個內容框中找到 變量名爲Path 的一行,雙擊】 --> 【Python安裝目錄追加到變值值中,用 ; 分割】 如:原來的值;C:\python27,切記前面有分號
linux環境:
linux中自帶python環境,若是想安裝本身想要的版本(本來是2.6升級爲2.7的版本),以下:
查看默認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
到此爲止,一下內容純乾貨:
########################################################################################
第一個程序從hello world開始,而且這是2.7與3.6的打印區別:
title:python基礎之數據類型與變量:
一 變量
變量:是用來存儲值的所在處(保存狀態),它們有名字和數據類型。變量的數據類型決定了如何將表明這些值的位存儲到計算機的內存中。在聲明變量時也可指定它的數據類型。全部變量都具備數據類型,以決定可以存儲哪一種數據
聲明變量:
# -*-coding:utf-8-*- name = 'cyy'
上述代碼聲明瞭一個變量,變量名爲: name,變量name的值爲:"cyy"
定義:容許做爲名字的有效字符串集合
變量的賦值:
鏈式賦值:y=x=z=1
多元賦值:x,y=1,2 x,y=y,x
增量/減量/乘量/除量 賦值:
變量解壓賦值:
數據類型:數據類型是在數據結構中的定義是一個值的集合以及定義在這個值集上的一組操做。數據類型分類:
int(整型)
python2.*與python3.*關於整型的區別
python2.*
在32位機器上,整數的位數爲32位,取值範圍爲-2**31~2**31-1,即-2147483648~2147483647
在64位系統上,整數的位數爲64位,取值範圍爲-2**63~2**63-1,即-9223372036854775808~9223372036854775807
python3.*整形長度無限制
跟C語言不一樣,Python的長整型沒有指定位寬,也就是說Python沒有限制長整型數值的大小,eg:
可是實際上因爲機器內存有限,因此咱們使用的長整型數值不可能無限大。
在使用過程當中,咱們如何區分長整型和整型數值呢?
一般的作法是在數字尾部加上一個大寫字母L或小寫字母l以表示該整數是長整型的,例如:
a = 9223372036854775808L
注意,自從Python2起,若是發生溢出,Python會自動將整型數據轉換爲長整型,
因此現在在長整型數據後面不加字母L也不會致使嚴重後果了。
python3.*
長整型,整型統一歸爲整型
1.23
,
3.14
,
-9.01
,等等。可是對於很大或很小的浮點數,就必須用科學計數法表示,把10用e替代,1.23x109就是
1.23e9
,或者
12.3e8
,0.000012能夠寫成
1.2e-5
,等等。
整數和浮點數在計算機內部存儲的方式是不一樣的,整數運算永遠是精確的,而浮點數運算則可能會有四捨五入的偏差
name="zzl" print(name.capitalize())#首字母變成大寫 print(name.center(30)) # 居中 print(name.center(30,'*'))#居中加填充 msg='hello world' print(msg.count('l'))#統計出現l在msg中出現的次數 print(msg.count('l',0,3))#統計l在msg中0到3之間l出現的次數 print(msg.count('l',-1))#統計l在msg中最後一個字符中出現l的次數 print(msg.endswith('s'))#判斷msg是否是以s結尾,不是則爲False,是爲True print(msg.startswith('h'))#判斷msg是否是以h開頭,不是則爲False,是爲True print(msg.find('l'))#統計l出現的位置,若是不存在,則返回-1,存在返回位置,存在多個,只返回第一個出現的位置 print(msg.find('l',3,9))#統計l在msg的3到9之間,l出現的位置 print(msg.index('e'))#index與find本質區別是:index已經知道msg中存在e,而後進行查找,若是不存在會報錯。 print(msg.isdigit())#判斷字符串中是否包含數字,包含數字爲False,不包含爲True msg='hello world'#多用於字符串拼接 msg_new='*'.join(msg) print(msg_new) msg='root:x:0:0:root:/bin/bash' print(msg.split(':')) #split分割 print(msg.split(':',maxsplit=1))#以:爲分割符,最大分割一次 msg_list=msg.split(':') print(':'.join(msg_list))#按照:拼接字符串 msg='helLo world' print(msg.upper())#小寫轉化爲大寫 print(msg.swapcase())#大小寫轉換 msg='*****zzl*****' print(msg.strip('*'))#去掉首尾的指定字符 print(msg.lstrip('*'))#去除左邊指定字符 print(msg.rstrip('*'))#去除右邊指定字符 print(msg.replace('z','y')) #替換字符,不指定個數所有替換,指定幾個就替換幾個 print(msg.replace('z','y',1))
不經常使用的方法:
#不經常使用的方法 msg='hello world' print(msg.isalpha())#msg是純字母返回True,不是則返回False print(msg.isidentifier())#msg是內置標識符,返回True,不然返回False print(msg.isspace())#msg是空格,返回True,反之,返回False print(msg.istitle())#msg是標題,也就是首字母大寫,返回True print(msg.ljust(10))#10個字符左對齊 print(msg.ljust(10,'*'))#10個字符左對齊,10個字符*填充 print(msg.rjust(10))#10個字符右對齊 print(msg.rjust(10,'*'))#10個字符右對齊,10個字符*填充 print(msg.zfill(20))#總長度20個,不足則在右邊添加0 message='''aaa bbb ccc ddd ''' print(message.splitlines()) #按照行數切分
字符串索引,再看解壓
msg='hello' #字符串索引操做 print(msg[4]) print(msg[-2]) #字符串的切分操做 print(msg[0:3]) #切分原則:顧頭不顧尾 print(msg[0:]) print(msg[:3]) print(msg[0:2000:2])#按兩個字符切分 print(msg[::-1])#hello倒過來 #再看變量解壓操做 msg='hello' x,y,z,*_=msg print(x) print(y) print(z) x,y,z='abc','aaa','xxx' print(x) print(y) print(z)
列表的內置方法:
name_list=['zzl','cyy','zl','cy'] #列表的索引操做 print(name_list[-1]) print(name_list[0:2]) print(name_list[::-1]) #列表的內置方法 #append增長到末尾 name_list=['zzl','cyy','zl','cy'] name_list.append('yy') print(name_list)
#insert插入到指定位置 name_list=['zzl','cyy','zl','cy'] name_list.insert(0,'ylqh') print(name_list)
#pop刪除
name_list.pop()#默認從右邊刪除 name_list.pop(2)#指定刪除第二個 print(name_list)
#清空列表 name_list=['zzl','cyy','zl','cy'] name_list.clear() print(name_list) #複製一份copy name_list=['zzl','cyy','zl','cy'] i=name_list.copy() print(i) #計數 name_list=['zzl','cyy','zl','yy','cy','yy'] print(name_list.count('yy'))#yy出現了幾回 #兩個列表合併 name_list=['zzl','cyy','zl','cy'] nlist=['ylqi','lift'] name_list.extend(nlist) print(name_list) #單獨加入列表 every_lis='xxx' name_list.extend(every_lis) print(name_list)
#remove移除 name_list=['zzl','cyy','zl','cy'] name_list.remove('zl')#按照元素名移除,有多個重複的元素值時,移除第一個 print(name_list) #reverse反序排列
name_list=['zzl','cyy','zl','cy'] name_list.reverse()#反序 print(name_list)
#sort排列 name_list=['d','c','A','1','@','*'] name_list.sort()#按照字符編碼表排列 print(name_list)
#統計列表有幾個元素或說成列表的長度 name_list=['zzl','cyy','zl','cy'] print(len(name_list))#統計長度 #判斷是否在列表裏面 # name_list=['zzl','cyy','zl','cy'] print ('zl' in name_list) print ('l' in name_list)
隊列(先進先出)
隊列 方法一: lis=[] lis.append(1) lis.append(2) lis.append(3) lis.append(4) print(lis) print(lis.pop(0)) print(lis) print(lis.pop(0)) print(lis) print(lis.pop(0)) print(lis) print(lis.pop(0)) print(lis) 方法二: l=[] l.insert(0,1) l.insert(0,2) l.insert(0,3) l.insert(0,4) print(l) print(l.pop()) print(l) print(l.pop()) print(l) print(l.pop()) print(l) print(l.pop()) print(l) 方法一 and 二 輸出結果: [4, 3, 2, 1] 1 [4, 3, 2] 2 [4, 3] 3 [4] 4 []
堆棧:(先進後出)
#堆棧:(先進後出) lis=[] lis.append(1) lis.append(2) lis.append(3) lis.append(4) print(lis) print(lis.pop()) print(lis) print(lis.pop()) print(lis) print(lis.pop()) print(lis) print(lis.pop()) print(lis) 輸出結果: [1, 2, 3, 4] 4 [1, 2, 3] 3 [1, 2] 2 [1] 1 []
五、元組(不可變列表)
經常使用操做:
座右銘:沒有最好,只有更好