Python3簡介
Python3與Python2之間是不兼容的,並且其中的差別性比較大。其實Python是linux上最經常使用的軟件之一,可是linux目前的版本大部分仍是使用Python2的,並且,在linux上依賴Python2的程序更多一些,因此 Python3 要代替 Python2 成爲主流還須要幾年的時間。
我建議:
php
- 若是是你在企業中,須要用到Python而學習Python的話,那就要看企業的應用Python的版本進行學習;
- 若是想要更多的成熟解決方案,最少的bug,最穩定的應用那就用Python2 ;
- 若是你是在讀大學的學生,那我建議你學習Python3,等到畢業的時候或許Python已經成爲了主流。
Python 是一個高層次的結合瞭解釋性、編譯性、互動性和麪向對象的腳本語言。
Python 的設計具備很強的可讀性,相比其餘語言常用英文關鍵字,其餘語言的一些標點符號,它具備比其餘語言更有特點語法結構。
python
- Python 是一種解釋型語言: 這意味着開發過程當中沒有了編譯這個環節。相似於PHP和Perl語言。
- Python 是交互式語言: 這意味着,您能夠在一個 Python 提示符 >>> 後直接執行代碼。
- Python 是面嚮對象語言: 這意味着Python支持面向對象的風格或代碼封裝在對象的編程技術。
- Python 是初學者的語言:Python 對初級程序員而言,是一種偉大的語言,它支持普遍的應用程序開發,從簡單的文字處理到 WWW 瀏覽器再到遊戲。
Python特色
- 易於學習:Python有相對較少的關鍵字,結構簡單,和一個明肯定義的語法,學習起來更加簡單。
- 易於閱讀:Python代碼定義的更清晰。
- 易於維護:Python的成功在於它的源代碼是至關容易維護的。
- 一個普遍的標準庫:Python的最大的優點之一是豐富的庫,跨平臺的,在UNIX,Windows和Macintosh兼容很好。
- 互動模式:互動模式的支持,您能夠從終端輸入執行代碼並得到結果的語言,互動的測試和調試代碼片段。
- 可移植:基於其開放源代碼的特性,Python已經被移植(也就是使其工做)到許多平臺。
- 可擴展:若是你須要一段運行很快的關鍵代碼,或者是想要編寫一些不肯開放的算法,你可使用C或C++完成那部分程序,而後從你的Python程序中調用。
- 數據庫:Python提供全部主要的商業數據庫的接口。
- GUI編程:Python支持GUI能夠建立和移植到許多系統調用。
- 可嵌入: 你能夠將Python嵌入到C/C++程序,讓你的程序的用戶得到"腳本化"的能力。
Python3 下載
Python 官網:https://www.python.org/linux
Python3 基礎語法
編碼
默認狀況下,Python 3 源碼文件以 UTF-8 編碼,全部字符串都是 unicode 字符串。程序員
標識符
- 第一個字符必須是字母表中字母或下劃線 _ 。
- 標識符的其餘的部分由字母、數字和下劃線組成。
- 標識符對大小寫敏感。
在 Python 3 中,能夠用中文做爲變量名,非 ASCII 標識符也是容許的了。算法
行與縮進
- python最具特點的就是使用縮進來表示代碼塊,不須要使用大括號 {} 。
- 縮進的空格數是可變的,可是同一個代碼塊的語句必須包含相同的縮進空格數。
縮進不一致,會致使運行錯誤:shell
IndentationError: unindent does not match any outer indentation level
import 與 from…import
- 在 python 用 import 或者 from…import 來導入相應的模塊。
- 將整個模塊(somemodule)導入,格式爲: import somemodule
- 從某個模塊中導入某個函數,格式爲: from somemodule import somefunction
- 從某個模塊中導入多個函數,格式爲: from somemodule import firstfunc, secondfunc, thirdfunc
- 將某個模塊中的所有函數導入,格式爲: from somemodule import *
Python 數字運算
Python 解釋器能夠做爲一個簡單的計算器,您能夠在解釋器裏輸入一個表達式,它將輸出表達式的值。
表達式的語法很直白: +, -, * 和 /, 和其它語言(如Pascal或C)裏同樣。
數據庫
注意:在不一樣的機器上浮點運算的結果可能會不同。編程
在整數除法中,除法 / 老是返回一個浮點數,若是隻想獲得整數的結果,丟棄可能的分數部分,可使用運算符 //。瀏覽器
注意:// 獲得的並不必定是整數類型的數,它與分母分子的數據類型有關係。服務器
>>> 7//2 3 >>> 7.0//2 3.0 >>> 7//2.0 3.0
Python3 列表
序列是Python中最基本的數據結構。序列中的每一個元素都分配一個數字 - 它的位置,或索引,第一個索引是0,第二個索引是1,依此類推。
Python有6個序列的內置類型,但最多見的是列表和元組。
序列均可以進行的操做包括索引,切片,加,乘,檢查成員。
此外,Python已經內置肯定序列的長度以及肯定最大和最小的元素的方法。
列表是最經常使用的Python數據類型,它能夠做爲一個方括號內的逗號分隔值出現。
列表的數據項不須要具備相同的類型
建立一個列表,只要把逗號分隔的不一樣的數據項使用方括號括起來便可。以下所示:list = [1, 2, 3, 4, 5 ]
Python3 元組
Python 的元組與列表相似,不一樣之處在於元組的元素不能修改。
元組使用小括號,列表使用方括號。
元組建立很簡單,只須要在括號中添加元素,並使用逗號隔開便可。
元組中只包含一個元素時,須要在元素後面添加逗號,不然括號會被看成運算符使用:
>>> tup1 = (50,) >>> type(tup1) # 加上逗號,類型爲元組 <class 'tuple'>
Python3 字典
字典是另外一種可變容器模型,且可存儲任意類型對象。
字典的每一個鍵值(key=>value)對用冒號(:)分割,每一個對之間用逗號(,)分割,整個字典包括在花括號({})中 。
鍵必須是惟一的,但值則沒必要。
值能夠取任何數據類型,但鍵必須是不可變的,如字符串,數字或元組。
實例:
#!/usr/bin/python3 dict = {'Name': 'Test', 'Age': 7, 'number': 'First'} print ("dict['Alice']: ", dict['Alice'])
如上面的實例,用字典裏沒有的鍵訪問數據,會輸出錯誤以下:
Traceback (most recent call last): File "test.py", line 5, in <module> print ("dict['Alice']: ", dict['Alice']) KeyError: 'Alice'
Python3 集合
集合(set)是一個無序的不重複元素序列。
可使用大括號 { } 或者 set() 函數建立集合,注意:建立一個空集合必須用 set() 而不是 { },由於 { } 是用來建立一個空字典。
Python3 循環語句
關於無限循環,咱們能夠經過設置條件表達式永遠不爲 false 來實現無限循環,實例以下:
#!/usr/bin/python3 var = 1 while var == 1 : # 表達式永遠爲 true num = int(input("請輸入一個數字 :")) print ("你輸入的數字是: ", num) print ("Good bye!")
執行以上腳本,輸出結果以下:
輸入一個數字 :5 你輸入的數字是: 5 輸入一個數字 :
你可使用 CTRL+C 來退出當前的無限循環。
無限循環在服務器上客戶端的實時請求很是有用。
Python3 迭代器與生成器
迭代器
迭代是Python最強大的功能之一,是訪問集合元素的一種方式。
迭代器是一個能夠記住遍歷的位置的對象。
迭代器對象從集合的第一個元素開始訪問,直到全部的元素被訪問完結束。迭代器只能往前不會後退。
迭代器有兩個基本的方法:iter() 和 next()。
字符串,列表或元組對象均可用於建立迭代器。
>>> list=[1,2,3,4] >>> it = iter(list) # 建立迭代器對象 >>> print (next(it)) # 輸出迭代器的下一個元素 1 >>> print (next(it)) 2 >>> print (next(it)) 3 >>> print (next(it)) 4
生成器
在 Python 中,使用了 yield 的函數被稱爲生成器(generator)。
跟普通函數不一樣的是,生成器是一個返回迭代器的函數,只能用於迭代操做,更簡單點理解生成器就是一個迭代器。
在調用生成器運行的過程當中,每次遇到 yield 時函數會暫停並保存當前全部的運行信息,返回 yield 的值, 並在下一次執行 next() 方法時從當前位置繼續運行。
調用一個生成器函數,返回的是一個迭代器對象。
Python3 函數
函數是組織好的,可重複使用的,用來實現單一,或相關聯功能的代碼段。
函數能提升應用的模塊性,和代碼的重複利用率。你已經知道Python提供了許多內建函數,好比print()。但你也能夠本身建立函數,這被叫作用戶自定義函數。
定義一個函數
你能夠定義一個由本身想要功能的函數,如下是簡單的規則:
- 函數代碼塊以 def 關鍵詞開頭,後接函數標識符名稱和圓括號 ()。
- 任何傳入參數和自變量必須放在圓括號中間,圓括號之間能夠用於定義參數。
- 函數的第一行語句能夠選擇性地使用文檔字符串—用於存放函數說明。 函數內容以冒號起始,而且縮進。
- return [表達式] 結束函數,選擇性地返回一個值給調用方。不帶表達式的return至關於返回 None。
函數調用
定義一個函數:給了函數一個名稱,指定了函數裏包含的參數,和代碼塊結構。
這個函數的基本結構完成之後,你能夠經過另外一個函數調用執行,也能夠直接從 Python 命令提示符執行。
以下實例調用了 printme() 函數:
#!/usr/bin/python3 #定義函數 def printme( str ): # 打印任何傳入的字符串 print (str) return #調用函數 printme("我要調用用戶自定義函數!") printme("再次調用同一函數")
以上實例輸出結果:
我要調用用戶自定義函數! 再次調用同一函數
Python3 模塊
在前面的幾個章節中咱們腳本上是用 python 解釋器來編程,若是你從 Python 解釋器退出再進入,那麼你定義的全部的方法和變量就都消失了。
爲此 Python 提供了一個辦法,把這些定義存放在文件中,爲一些腳本或者交互式的解釋器實例使用,這個文件被稱爲模塊。
模塊是一個包含全部你定義的函數和變量的文件,其後綴名是.py。模塊能夠被別的程序引入,以使用該模塊中的函數等功能。這也是使用 python 標準庫的方法。
下面是一個使用 python 標準庫中模塊的例子。
#!/usr/bin/python3 # 文件名: using_sys.py import sys print('命令行參數以下:') for i in sys.argv: print(i) print('\n\nPython 路徑爲:', sys.path, '\n')
執行結果以下所示:
$ python using_sys.py 參數1 參數2 命令行參數以下: using_sys.py 參數1 參數2 Python 路徑爲: ['/root', '/usr/lib/python3.4', '/usr/lib/python3.4/plat-x86_64-linux-gnu', '/usr/lib/python3.4/lib-dynload', '/usr/local/lib/python3.4/dist-packages', '/usr/lib/python3/dist-packages']
Python3 File(文件) 方法
open() 方法
Python open() 方法用於打開一個文件,並返回文件對象,在對文件進行處理過程都須要使用到這個函數,若是該文件沒法被打開,會拋出 OSError。
注意:使用 open() 方法必定要保證關閉文件對象,即調用 close() 方法。
open() 函數經常使用形式是接收兩個參數:文件名(file)和模式(mode)。
Python3 錯誤和異常
做爲 Python 初學者,在剛學習 Python 編程時,常常會看到一些報錯信息,在前面咱們沒有說起,這章節咱們會專門介紹。
Python 有兩種錯誤很容易辨認:語法錯誤和異常。
語法錯誤
Python 的語法錯誤或者稱之爲解析錯,是初學者常常碰到的。
語法分析器指出了出錯的一行,而且在最早找到的錯誤的位置標記了一個小小的箭頭。
異常
即使 Python 程序的語法是正確的,在運行它的時候,也有可能發生錯誤。運行期檢測到的錯誤被稱爲異常。
大多數的異常都不會被程序處理,都以錯誤信息的形式展示在這裏:
實例
>>> 10 * (1/0) # 0 不能做爲除數,觸發異常 Traceback (most recent call last): File "<stdin>", line 1, in ? ZeroDivisionError: division by zero >>> 4 + spam*3 # spam 未定義,觸發異常 Traceback (most recent call last): File "<stdin>", line 1, in ? NameError: name 'spam' is not defined >>> '2' + 2 # int 不能與 str 相加,觸發異常 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: can only concatenate str (not "int") to str
異常以不一樣的類型出現,這些類型都做爲信息的一部分打印出來: 例子中的類型有 ZeroDivisionError,NameError 和 TypeError。
錯誤信息的前面部分顯示了異常發生的上下文,並以調用棧的形式顯示具體信息。
Python3 面向對象
Python從設計之初就已是一門面向對象的語言,正由於如此,在Python中建立一個類和對象是很容易的。本章節咱們將詳細介紹Python的面向對象編程。
若是你之前沒有接觸過面向對象的編程語言,那你可能須要先了解一些面嚮對象語言的一些基本特徵,在頭腦裏頭造成一個基本的面向對象的概念,這樣有助於你更容易的學習Python的面向對象編程。
接下來咱們先來簡單的瞭解下面向對象的一些基本特徵。
面向對象技術簡介
- 類(Class): 用來描述具備相同的屬性和方法的對象的集合。它定義了該集合中每一個對象所共有的屬性和方法。對象是類的實例。
- 方法:類中定義的函數。
- 類變量:類變量在整個實例化的對象中是公用的。類變量定義在類中且在函數體以外。類變量一般不做爲實例變量使用。
- 數據成員:類變量或者實例變量用於處理類及其實例對象的相關的數據。
- 方法重寫:若是從父類繼承的方法不能知足子類的需求,能夠對其進行改寫,這個過程叫方法的覆蓋(override),也稱爲方法的重寫。
- 局部變量:定義在方法中的變量,只做用於當前實例的類。
- 實例變量:在類的聲明中,屬性是用變量來表示的,這種變量就稱爲實例變量,實例變量就是一個用 self 修飾的變量。
- 繼承:即一個派生類(derived class)繼承基類(base
class)的字段和方法。繼承也容許把一個派生類的對象做爲一個基類對象對待。例如,有這樣一個設計:一個Dog類型的對象派生自Animal類,這是模擬"是一個(is-a)"關係(例圖,Dog是一個Animal)。 - 實例化:建立一個類的實例,類的具體對象。
- 對象:經過類定義的數據結構實例。對象包括兩個數據成員(類變量和實例變量)和方法。
和其它編程語言相比,Python 在儘量不增長新的語法和語義的狀況下加入了類機制。
Python中的類提供了面向對象編程的全部基本功能:類的繼承機制容許多個基類,派生類能夠覆蓋基類中的任何方法,方法中能夠調用基類中的同名方法。
對象能夠包含任意數量和類型的數據。