Python是一種計算機程序設計語言。你可能已經據說過不少種流行的編程語言,好比很是難學的C語言,很是流行的Java語言,適合初學者的Basic語言,適合網頁編程的JavaScript語言等等。html
那Python是一種什麼語言?java
首先,咱們普及一下編程語言的基礎知識。用任何編程語言來開發程序,都是爲了讓計算機幹活,好比下載一個MP3,編寫一個文檔等等,而計算機幹活的CPU只認識機器指令,因此,儘管不一樣的編程語言差別極大,最後都得「翻譯」成CPU能夠執行的機器指令。而不一樣的編程語言,幹同一個活,編寫的代碼量,差距也很大。python
好比,完成同一個任務,C語言要寫1000行代碼,Java只須要寫100行,而Python可能只要20行。linux
因此Python是一種至關高級的語言。c++
你也許會問,代碼少還很差?代碼少的代價是運行速度慢,C程序運行1秒鐘,Java程序可能須要2秒,而Python程序可能就須要10秒。程序員
那是否是越低級的程序越難學,越高級的程序越簡單?表面上來講,是的,可是,在很是高的抽象計算中,高級的Python程序設計也是很是難學的,因此,高級程序語言不等於簡單。算法
可是,對於初學者和完成普通任務,Python語言是很是簡單易用的。連Google都在大規模使用Python,你就不用擔憂學了會沒用。數據庫
用Python能夠作什麼?能夠作平常任務,好比自動備份你的MP3;能夠作網站,不少著名的網站包括YouTube就是Python寫的;能夠作網絡遊戲的後臺,不少在線遊戲的後臺都是Python開發的。總之就是能幹不少不少事啦。編程
Python固然也有不能幹的事情,好比寫操做系統,這個只能用C語言寫;寫手機應用,只能用Swift/Objective-C(針對iPhone)和Java(針對Android);寫3D遊戲,最好用C或C++。windows
Python是著名的「龜叔」Guido van Rossum在1989年聖誕節期間,爲了打發無聊的聖誕節而編寫的一個編程語言。
龜叔給Python的定位是「優雅」、「明確」、「簡單」,因此Python程序看上去老是簡單易懂,初學者學Python,不但入門容易,並且未來深刻下去,能夠編寫那些很是很是複雜的程序。
總的來講,Python的哲學就是簡單優雅,儘可能寫容易看明白的代碼,儘可能寫少的代碼。若是一個資深程序員向你炫耀他寫的晦澀難懂、動不動就幾萬行的代碼,你能夠盡情地嘲笑他。
編程語言排行榜TOP20榜單-2017年1月
注:上述重點字體表示該公司主要使用Python語言開發
C語言: 代碼編譯獲得 機器碼 ,機器碼在處理器上直接執行,每一條指令控制CPU工做
其餘語言: 代碼編譯獲得 字節碼 ,虛擬機執行字節碼並轉換成機器碼再後在處理器上執行
對於使用:Python的類庫齊全而且使用簡潔,若是要實現一樣的功能,Python 10行代碼能夠解決,C可能就須要100行甚至更多.
對於速度:Python的運行速度相較與C,絕逼是慢了
對於使用:Linux原裝Python,其餘語言沒有;以上幾門語言都有很是豐富的類庫支持
對於速度:Python在速度上可能稍顯遜色
因此,Python和其餘語言沒有什麼本質區別,其餘區別在於:擅長某領域、人才豐富、先入爲主。
python
就是啓動CPython解釋器。CPython是使用最廣的Python解釋器。IPython是基於CPython之上的一個交互式解釋器,也就是說,IPython只是在交互方式上有所加強,可是執行Python代碼的功能和CPython是徹底同樣的。比如不少國產瀏覽器雖然外觀不一樣,但內核其實都是調用了IE。
CPython用>>>
做爲提示符,而IPython用In [序號]:
做爲提示符。
絕大部分Python代碼均可以在PyPy下運行,可是PyPy和CPython有一些是不一樣的,這就致使相同的Python代碼在兩種解釋器下執行可能會有不一樣的結果。若是你的代碼要放到PyPy下執行,就須要瞭解PyPy和CPython的不一樣點。
Python的解釋器不少,但使用最普遍的仍是CPython。若是要和Java或.Net平臺交互,最好的辦法不是用Jython或IronPython,而是經過網絡調用來交互,確保各程序之間的獨立性。
windows:
一、下載安裝包 https://www.python.org/downloads/ 二、安裝 默認安裝路徑:C:\python35 三、配置環境變量 【右鍵計算機】--》【屬性】--》【高級系統設置】--》【高級】--》【環境變量】--》【在第二個內容框中找到 變量名爲Path 的一行,雙擊】 --> 【Python安裝目錄追加到變值值中,用 ; 分割】 如:原來的值;C:\python35,切記前面有分號
首先,根據你的Windows版本(64位仍是32位)從Python的官方網站下載Python 3.5對應的64位安裝程序或32位安裝程序(網速慢的同窗請移步國內鏡像),而後,運行下載的EXE安裝包:
特別要注意勾上Add Python 3.5 to PATH
,而後點「Install Now」便可完成安裝。
驗證:
安裝成功後,打開命令提示符窗口,敲入python後,會出現兩種狀況:
狀況一:
看到上面的畫面,就說明Python安裝成功!
你看到提示符>>>
就表示咱們已經在Python交互式環境中了,能夠輸入任何Python代碼,回車後會馬上獲得執行結果。如今,輸入exit()
並回車,就能夠退出Python交互式環境(直接關掉命令行窗口也能夠)。
狀況二: 獲得一個錯誤
'python' 不是內部或外部命令,也不是可運行的程序或批處理文件。
這是由於Windows會根據一個Path
的環境變量設定的路徑去查找python.exe
,若是沒找到,就會報錯。若是在安裝時漏掉了勾選Add Python 3.5 to PATH
,那就要手動把python.exe
所在的路徑添加到Path中。
若是你不知道怎麼修改環境變量,建議把Python安裝程序從新運行一遍,務必記得勾上Add Python 3.5 to PATH
。
Linux:
無需安裝,原裝Python環境,默認2.6版本
PS:若是自帶2.6版本,請更新至3.5版本
Windows升級:
卸載重裝便可
Linux升級:
Linux的yum依賴自帶Python,爲防止錯誤,此處更新其實就是再安裝一個Python,建議在python官網下載源碼包進行編譯安裝。
查看默認Python版本 [root@shuke data]# python -V
升級步驟:
一、安裝gcc,用於編譯Python源碼 yum install gcc 二、下載源碼包,https://www.python.org/ftp/python/ 三、解壓並進入源碼文件 四、編譯安裝 ./configure make all make install 五、查看版本 /usr/local/bin/python3.5 -V 六、修改默認Python版本 mv /usr/bin/python /usr/bin/python2.6 ln -s /usr/local/bin/python3.5 /usr/bin/python 七、防止yum執行異常,修改yum使用的Python版本 vi /usr/bin/yum 將頭部 #!/usr/bin/python 修改成 #!/usr/bin/python2.6
八、升級完成後,驗證版本
[root@shuke day01]# python -V
Python 3.5.2 # 升級後的python版本爲3.5.2
一、使用:
a、建立項目:file ---> new project
b、新建文件夾:右擊要建立文件夾的項目或上級目錄 ----〉new ---〉directory
c、新建文件:右擊要建立文件夾的項目或上級目錄 ----〉new ---〉file
d、運行文件:要執行的.py文件內容---〉右擊---〉run xx.py
二、文件編碼:
file ---->default settings --->editor --->file encodings
三、程序文件模版:
file ---->default settings --->editor --->file and code templates
四、改變字體大小:
file ----〉settings ----〉editor ---> General ---〉mouse
ps.pycharm的更多應用請訪問:
http://www.cnblogs.com/wangshuyang/articles/5846563.html
在linux 下建立一個文件名稱爲hello.py,並輸入
print("Hello World!")
而後終端執行命令:python hello.py
[root@shuke day01]# cat hello.py print("Hello World!")
[root@shuke day01]# python hello.py Hello World!
執行 python hello.py 時,明確的指出 hello.py 腳本由 python 解釋器來執行。
在Linux/Unix系統中,你能夠在腳本頂部添加如下命令讓Python腳本能夠像SHELL腳本同樣可直接執行:
#!/usr/bin/env python # 生命頭部,指定解釋器 #_*_coding:utf-8_*_ # 指定字符編碼,python3.x默認爲utf-8 print("Hello World!")
執行前將py腳本文件賦予執行權限:
[root@shuke day01]# chmod +x hello.py # 添加執行權限 [root@shuke day01]# ll hello.py -rwxr-xr-x 1 root root 45 Apr 27 16:49 hello.py [root@shuke day01]# ./hello.py # 直接運行腳本文件 Hello World!
咱們能夠在命令提示符中輸入"Python"命令來啓動Python解釋器:
[root@shuke day01]# python # 進入交互模式 Python 3.5.2 (default, Apr 27 2017, 11:27:01) # python版本信息 [GCC 4.4.7 20120313 (Red Hat 4.4.7-17)] on linux Type "help", "copyright", "credits" or "license" for more information. >>> print ("Hello, Python!"); # 輸入 Hello, Python! # 輸出 >>> flag = True >>> if flag : # 當鍵入一個多行結構時,續行是必須的。咱們能夠看下以下 if 語句: ... print("flag 條件爲 True!") ... # 需再次輸入回車 flag 條件爲 True! # 輸出 >>>
python解釋器在加載 .py 文件中的代碼時,會對內容進行編碼(在python2.x版本中默認爲ascill,在python3.x版本中默認字符編碼爲:unicode)
ASCII(American Standard Code for Information Interchange,美國標準信息交換代碼)是基於拉丁字母的一套電腦編碼系統,主要用於顯示現代英語和其餘西歐語言,其最多隻能用 8 位來表示(一個字節),即:2**8 = 256-1,因此,ASCII碼最多隻能表示 255 個符號。
------關於中文------
爲了處理漢字,程序員設計了用於簡體中文的GB2312和用於繁體中文的big5。
GB2312(1980年)一共收錄了7445個字符,包括6763個漢字和682個其它符號。漢字區的內碼範圍高字節從B0-F7,低字節從A1-FE,佔用的碼位是72*94=6768。其中有5個空位是D7FA-D7FE。
GB2312 支持的漢字太少。1995年的漢字擴展規範GBK1.0收錄了21886個符號,它分爲漢字區和圖形符號區。漢字區包括21003個字符。2000年的 GB18030是取代GBK1.0的正式國家標準。該標準收錄了27484個漢字,同時還收錄了藏文、蒙文、維吾爾文等主要的少數民族文字。如今的PC平臺必須支持GB18030,對嵌入式產品暫不做要求。因此手機、MP3通常只支持GB2312。
從ASCII、GB23十二、GBK 到GB18030,這些編碼方法是向下兼容的,即同一個字符在這些方案中老是有相同的編碼,後面的標準支持更多的字符。在這些編碼中,英文和中文能夠統一地處理。區分中文編碼的方法是高字節的最高位不爲0。按照程序員的稱呼,GB23十二、GBK到GB18030都屬於雙字節字符集 (DBCS)。
有的中文Windows的缺省內碼仍是GBK,能夠經過GB18030升級包升級到GB18030。不過GB18030相對GBK增長的字符,普通人是很難用到的,一般咱們仍是用GBK指代中文Windows內碼。
顯然ASCII碼沒法將世界上的各類文字和符號所有表示,因此,就須要新出一種能夠表明全部字符和符號的編碼,即:Unicode
Unicode(統一碼、萬國碼、單一碼)是一種在計算機上使用的字符編碼。Unicode 是爲了解決傳統的字符編碼方案的侷限而產生的,它爲每種語言中的每一個字符設定了統一而且惟一的二進制編碼,規定全部的字符和符號最少由 16 位來表示(2個字節),即:2 **16 = 65536,
注:此處說的的是最少2個字節,可能更多
UTF-8,是對Unicode編碼的壓縮和優化,他再也不使用最少使用2個字節,而是將全部的字符和符號進行分類:ascii碼中的內容用1個字節保存、歐洲的字符用2個字節保存,東亞的字符用3個字節保存...
因此,python解釋器在加載 .py 文件中的代碼時,會對內容進行編碼(在python2.x中默認ascill),在2.x版本運行內容包含中文的腳本時,會報錯:
報錯:ascii碼沒法表示中文
#!/usr/bin/env python print "你好,世界" # 顯示爲亂碼
改正:應該顯示的告訴python解釋器,用什麼編碼來執行源代碼,即:
#!/usr/bin/env python # -*- coding: utf-8 -*- # 指定使用utf-8編碼進行編碼 print "你好,世界" # 顯示正常
在python3.x版本中因爲默認編碼是unicode,因爲unicode編碼兼容中文,因此能夠正常顯示中文!
確保對模塊, 函數, 方法和行內註釋使用正確的風格
Python中的註釋有單行註釋和多行註釋:
Python中單行註釋以#開頭,例如:
print("Hello, World!") # 這是一個註釋
多行註釋用三個單引號(''')或者三個雙引號(""")將註釋括起來,例如:
一、單引號(''')
#!/usr/bin/python3 ''' 這是多行註釋,用三個單引號 這是多行註釋,用三個單引號 這是多行註釋,用三個單引號 ''' print("Hello, World!")
二、雙引號(''')
#!/usr/bin/python3 """ 這是多行註釋,用三個單引號 這是多行註釋,用三個單引號 這是多行註釋,用三個單引號 """ print("Hello, World!")
執行Python代碼時,若是導入了其餘的 .py 文件,那麼,執行過程當中會自動生成一個與其同名的 .pyc 文件,該文件就是Python解釋器編譯以後產生的字節碼。
PS: 代碼通過編譯能夠產生字節碼;字節碼經過反編譯也能夠獲得代碼。
簡述Python的運行過程
在說這個問題以前,咱們先來講兩個概念,PyCodeObject和pyc文件。
咱們在硬盤上看到的pyc天然沒必要多說,而其實PyCodeObject則是Python編譯器真正編譯成的結果。咱們先簡單知道就能夠了,繼續向下看。
當python程序運行時,編譯的結果則是保存在位於內存中的PyCodeObject中,當Python程序運行結束時,Python解釋器則將PyCodeObject寫回到pyc文件中。
當python程序第二次運行時,首先程序會在硬盤中尋找pyc文件,若是找到,則直接載入,不然就重複上面的過程。
因此咱們應該這樣來定位PyCodeObject和pyc文件,咱們說pyc文件實際上是PyCodeObject的一種持久化保存方式。
等號(=)用來給變量賦值。
等號(=)運算符左邊是一個變量名,等號(=)運算符右邊是存儲在變量中的值。
#!/usr/bin/env python
#_*_coding:utf-8_*_ name = "shuke"
上述代碼聲明瞭一個變量,變量名爲: name,變量name的值爲:"shukei"
變量定義的規則:
多個變量賦值
a = b = c = 1 # 該實例,建立一個整型對象,值爲1,三個變量被分配到相同的內存空間上。 a, b, c = 1, 2, "runoob" # 該實例,兩個整型對象 1 和 2 的分配給變量 a 和 b,字符串對象 "runoob" 分配給變量 c。
#!/usr/bin/env python #_*_coding:utf-8_*_ #name = raw_input("What is your name?") #only on python 2.x name = input("What is your name?") print("Hello " + name )
輸入密碼時,若是想要不進行明文顯示,須要利用getpass 模塊中的 getpass方法,即:
注: getpass模塊須要在終端測試效果,在pycharm IDE中不能測試效果
#!/usr/bin/env python # -*- coding: utf-8 -*- import getpass pwd = getpass.getpass("請輸入密碼:") # 將用戶輸入的內容賦值給 pwd 變量 print(pwd) # 打印輸入的內容
Python3 中有六個標準的數據類型:
2 是一個整數的例子。
長整數 不過是大一些的整數。
3.23和52.3E-4是浮點數的例子。E標記表示10的冪。在這裏,52.3E-4表示52.3 * 10-4。
(-5+4j)和(2.3-4.6j)是複數的例子
int(整型)
>>> a, b, c, d = 20, 5.5, True, 4+3j >>> print(type(a), type(b), type(c), type(d)) <class 'int'> <class 'float'> <class 'bool'> <class 'complex'>
此外還能夠用 isinstance 來判斷:
>>> a = 111 >>> isinstance(a, int) True
isinstance 和 type 的區別在於:
class A: pass class B(A): pass isinstance(A(), A) # returns True type(A()) == A # returns True isinstance(B(), A) # returns True type(B()) == A # returns False
區別就是:
注:在 Python2 中是沒有布爾型的,它用數字 0 表示 False,用 1 表示 True。到 Python3 中,把 True 和 False 定義成關鍵字了,但它們的值仍是 1 和 0,它們能夠和數字相加。
您也可使用del語句刪除一些對象引用。
del語句的語法是:
del var1[,var2[,var3[....,varN]]]]
您能夠經過使用del語句刪除單個或多個對象。例如:
del var del var_a, var_b
數值運算
>>> 5 + 4 # 加法 9 >>> 4.3 - 2 # 減法 2.3 >>> 3 * 7 # 乘法 21 >>> 2 / 4 # 除法,獲得一個浮點數 0.5 >>> 2 // 4 # 除法,獲得一個整數 0 >>> 17 % 3 # 取餘 2 >>> 2 ** 5 # 乘方 32
注意:
"hello world"
name = "shuke" print "i am %s " % name #輸出: i am shuke
注: 字符串是 %s;整數 %d;浮點數%f
與 C 字符串不一樣的是,Python 字符串不能被改變。向一個索引位置賦值,好比word[0] = 'm'會致使錯誤。
注意:
List(列表) 是 Python 中使用最頻繁的數據類型。
列表能夠完成大多數集合類的數據結構實現。列表中元素的類型能夠不相同,它支持數字,字符串甚至能夠包含列表(所謂嵌套)。
列表是寫在方括號([])之間、用逗號分隔開的元素列表。
和字符串同樣,列表一樣能夠被索引和截取,列表被截取後返回一個包含所需元素的新列表。
name_list = ['alex', 'seven', 'eric'] 或 name_list = list(['alex', 'seven', 'eric'])
List內置了有不少方法,例如append()、pop()等等,這在後面會講到。
注意:
基本操做:
5. Tuple(元組)(不可變的列表)
元組(tuple)與列表相似,不一樣之處在於元組的元素不能修改。元組寫在小括號(())裏,元素之間用逗號隔開。
建立元組:
ages = (11, 22, 33, 44, 55) 或 ages = tuple((11, 22, 33, 44, 55))
string、list和tuple都屬於sequence(序列)。
注意:
字典(dictionary)是Python中另外一個很是有用的內置數據類型。
列表是有序的對象結合,字典是無序的對象集合。二者之間的區別在於:字典當中的元素是經過鍵來存取的,而不是經過偏移存取。
字典是一種映射類型,字典用"{ }"標識,它是一個無序的鍵(key) : 值(value)對集合。
鍵(key)必須使用不可變類型。
在同一個字典中,鍵(key)必須是惟一的。
建立字典:
person = {"name": "mr.wu", 'age': 18} 或 person = dict({"name": "mr.wu", 'age': 18})
另外,字典類型也有一些內置的函數,例如clear()、keys()、values()等。
注意:
基本操做:
集合(set)是一個無序不重複元素的序列。
基本功能是進行成員關係測試和刪除重複元素。
可使用大括號 {} 或者 set() 函數建立集合,注意:建立一個空集合必須用 set() 而不是 {},由於 {}是用來建立一個空字典。
建立集合:
student = {'Tom', 'Jim', 'Mary', 'Tom', 'Jack', 'Rose'} name = set() #建立一個空集合
注意:
基本操做:
如下假設變量: a=10,b=20:
如下假設變量a爲10,變量b爲20:
如下假設變量a爲10,變量b爲20:
更多內容:http://www.runoob.com/python/python-operators.html
示例:
result = 值1 if 條件 else 值2 # 若是條件成立,那麼將 「值1」 賦值給result變量,不然,將「值2」賦值給result變量
若是條件爲真:result = 值1
若是條件爲假:result = 值2
Python條件語句是經過一條或多條語句的執行結果(True或者False)來決定執行的代碼塊。
能夠經過下圖來簡單瞭解條件語句的執行過程:
Python程序語言指定任何非0和非空(null)值爲true,0 或者 null爲false。
Python 編程中 if 語句用於控制程序的執行,基本形式爲:
if 判斷條件: 執行語句…… else: 執行語句…
其中"判斷條件"成立時(非零),則執行後面的語句,而執行內容能夠多行,以縮進來區分表示同一範圍。
else 爲可選語句,當須要在條件不成立時執行內容則能夠執行相關語句,具體例子以下:
#!/usr/bin/python # -*- coding: UTF-8 -*- # 例1:if 基本用法 flag = False name = 'luren' if name == 'python': # 判斷變量否爲'python' flag = True # 條件成立時設置標誌爲真 print 'welcome boss' # 並輸出歡迎信息 else: print name # 條件不成立時輸出變量名稱
if 語句的判斷條件能夠用>(大於)、<(小於)、==(等於)、>=(大於等於)、<=(小於等於)來表示其關係。
當判斷條件爲多個值時,可使用如下形式:
if 判斷條件1: 執行語句1…… elif 判斷條件2: 執行語句2…… elif 判斷條件3: 執行語句3…… else: 執行語句4……
#!/usr/bin/python # -*- coding: UTF-8 -*- # 例2:elif用法 num = 5 if num == 3: # 判斷num的值 print 'boss' elif num == 2: print 'user' elif num == 1: print 'worker' elif num < 0: # 值小於零時輸出 print 'error' else: print 'roadman' # 條件均不成立時輸出
當if有多個條件時可以使用括號來區分判斷的前後順序,括號中的判斷優先執行,此外 and 和 or 的優先級低於>(大於)、<(小於)等判斷符號,即大於和小於在沒有括號的狀況下會比與或要優先判斷。
你也能夠在同一行的位置上使用if條件判斷語句,以下實例:
#!/usr/bin/python # -*- coding: UTF-8 -*- var = 100 if ( var == 100 ) : print "變量 var 的值爲100" print "Good bye!"
li = [11,22,33,44] for item in li: print item
sequence = [12, 34, 34, 23, 45, 76, 89] for k,v in enumerate(sequence): print(k,v)
print range(1, 10) # 結果:[1, 2, 3, 4, 5, 6, 7, 8, 9] print range(1, 10, 2) # 結果:[1, 3, 5, 7, 9] print range(30, 0, -2) # 結果:[30, 28, 26, 24, 22, 20, 18, 16, 14, 12, 10, 8, 6, 4, 2]
在 python 中,for … else 表示這樣的意思,for 中的語句和普通的沒有區別,else 中的語句會在循環正常執行完(即 for 不是經過 break 跳出而中斷的)的狀況下執行,while … else 也是同樣。
#!/usr/bin/python # -*- coding: UTF-8 -*- for num in range(10,20): # 迭代 10 到 20 之間的數字 for i in range(2,num): # 根據因子迭代 if num%i == 0: # 肯定第一個因子 j=num/i # 計算第二個因子 print '%d 等於 %d * %d' % (num,i,j) break # 跳出當前循環 else: # 循環的 else 部分 print num, '是一個質數'
使用場景:
with open('a.txt','r',encoding='utf-8') as read_f,\ open('aa.txt','w',encoding='utf-8') as write_f: for line in read_f: write_f.write(line) else: print('write successfull')
有一種循環叫死循環,一經觸發,就運行個天荒地老、海枯石爛。
count = 0 while True: print("你是風兒我是沙,纏纏綿綿到天涯...",count) count +=1
在 python 中,while … else 在循環條件爲 false 時執行 else 語句塊:
#!/usr/bin/python count = 0 while count < 5: print count, " is less than 5" count = count + 1 else: print count, " is not less than 5"
相似 if 語句的語法,若是你的 while 循環體中只有一條語句,你能夠將該語句與while寫在同一行中, 以下所示:
#!/usr/bin/python flag = 1 while (flag): print 'Given flag is really true!' print "Good bye!"
注意:1. 以上的無限循環你可使用 CTRL+C 來中斷循環。
2. pass是空語句,是爲了保持程序結構的完整性。
while 語句時還有另外兩個重要的命令 continue,break 來跳過循環,continue 用於跳過該次循環,break 則是用於退出循環,此外"判斷條件"還能夠是個常值,表示循環一定成立,具體用法以下:
# continue 和 break 用法 i = 1 while i < 10: i += 1 if i%2 > 0: # 非雙數時跳過輸出 continue print i # 輸出雙數二、四、六、八、10 i = 1 while 1: # 循環條件爲1一定成立 print i # 輸出1~10 i += 1 if i > 10: # 當i大於10時跳出循環 break