Python第一步
1.Python是一種解釋性語言,沒有了編譯環節。
- py和pyc 所以是有沒有編譯?
2.像Perl一樣遵循GPL(GNU General Public License)協議。
3.指令碼化:可以嵌入到C/C++程式。
4.可擴充套件:需要一段執行很快的程式碼,或者不願公開的程式碼,可以使用C或C++完成那部分程式,再用Python呼叫。
注:關於Python的更細節的東西,在不斷理解的基礎上深化。
【規範】
Python 識別符號
- 單下劃線開頭 _foo 的代表不能直接訪問的類屬性,需通過類提供的介面進行訪問,不能用 from xxx import * 而匯入;
- 雙下劃線開頭的 __foo 代表類的私有成員;
- 以雙下劃線開頭和結尾的 __foo__ 代表 Python 裡特殊方法專用的標識,如 __init__() 代表類的建構函式。
Python空行
- 函式之間或類的方法之間用空行分隔,表示一段新的程式碼的開始。類和函式入口之間也用一行空行分隔,以突出函式入口的開始。
- 空行並不是Python語法的一部分。
【變數型別】
- Python 中的變數賦值不需要型別宣告
- 每個變數在記憶體中建立,都包括變數的標識,名稱和資料這些資訊。
- 每個變數在使用前都必須賦值,變數賦值以後該變數才會被建立。
- Python允許你同時為多個變數賦值(a=b=c=1;a,b,c=1,2,'s')
標準資料型別
- Numbers(數字)
- String(字串)
- List(列表)
- Tuple(元組)
- Dictionary(字典)
Python數字
- 不可改變的資料型別,這意味著改變數字資料型別會分配一個新的物件。
- int
- long(也可8進位制和16進位制)(末尾加L或者l),- 無限大小的整數
- float
- complex(用 a + bj,或者 complex(a,b) 表示, 複數的實部 a 和虛部 b 都是浮點型。)
Python字串
- 字串或串(String)是由數字、字母、下劃線組成的一串字元。
- 2種取值順序:(從左到右索引預設0開始的,最大範圍是字串長度少1;從右到左索引預設-1開始的,最大範圍是字串開頭)
- 獲取一段子字串: [頭下標:尾下標]
- 加號(+)是字串連線運算子,星號(*)是重複操作。(r/R)原始字串
- Python不支援單字元型別,單字元在 Python 中也是作為一個字串使用。
- Python2.6 開始,新增了一種格式化字串的函式 str.format(),它增強了字串格式化的功能。
Python列表
- [,,,,]
- 列表中值的切割也可以用到變數 [頭下標:尾下標]
- 字串相當於一個字元列表
- 列表的資料項不需要具有相同的型別
-
- 可以使用 del 語句來刪除列表的元素( del list1[2] )
- 使用append()方法來新增列表項(list.append('ss'));
- list.pop([index=-1])
移除列表中的一個元素(預設最後一個元素),並且返回該元素的值 - list.remove(obj)
移除列表中某個值的第一個匹配項
- 列表對 + 和 * 的操作符與字串相似。
- a[:] 是建立 a 的一個副本,這樣我們在程式碼中對 a[:] 進行操作後,就不會改變 a 的值了。而若直接對 a 進行操作,那麼 a 的值會收到一些操作的影響
Python元組
- 元組用"()"標識。內部元素用逗號隔開。
- 元組不能二次賦值,相當於只讀列表。
- tuple(seq) 將列表轉換為元組。
- 元組的一級元素不可被修改增加刪除但可以修改二級後的。
如修改元祖中列表,字典等內容:
- 元組中只包含一個元素時,需要在元素後面新增逗號:
tup1 = (50,)Python 字典
- 列表是有序的物件集合,字典是無序的物件集合。
- 字典是可變容器模型,且可儲存任意型別物件。
- 字典當中的元素是通過鍵來存取的,而不是通過偏移存取。
- 用"{ }"標識。字典由索引(key)和它對應的值value組成。
d = {key1 : value1, key2 : value2 }
- 鍵一般是唯一的,如果重複最後的一個鍵值對會替換前面的,值不需要唯一。
- 值可以取任何資料型別,但鍵必須是不可變的,如字串,數字或元組。
- 刪除相關
del dict['Name']; # 刪除鍵是'Name'的條目
dict.clear(); # 清空詞典所有條目
del dict ; # 刪除詞典
Python資料型別轉換
- 資料型別的轉換,你只需要將資料型別作為函式名即可。
【Python運算子】
- Python 中沒有 ++ 或 -- 自運算子
Python算術運算子
- ** 冪
- // 取整除,返回商的整數部分( 9//2 輸出結果 4 , 9.0//2.0 輸出結果 4.0 )
- 注意:Python2.x 裡,整數除整數,只能得出整數。如果要得到小數部分,把其中一個數改成浮點數即可。
Python邏輯運算子(非0即為真)
- x and y:布林"與" - 如果 x 為 False,x and y 返回 False,否則它返回 y 的計算值。
- x or y: 布林"或" - 如果 x 是非 0,它返回 x 的值,否則它返回 y 的計算值。
- not x: 布林"非" - 如果 x 為 True,返回 False 。如果 x 為 False,它返回 True。
Python成員運算子
- in:如果在指定的序列中找到值返回 True,否則返回 False。
- not in 如果在指定的序列中沒有找到值返回 True,否則返回 False。
Python身份運算子
- is :是判斷兩個識別符號是不是引用自一個物件【x is y, 類似 id(x) == id(y)】(注: id() 函式用於獲取物件記憶體地址。)
- is not :是判斷兩個識別符號是不是引用自不同物件
- 注:is 用於判斷兩個變數引用物件是否為同一個, == 用於判斷引用變數的值是否相等。
- 【注】為了提高記憶體利用效率對於一些簡單的物件,如一些數值較小的int物件,python採取重用物件記憶體的辦法
【Python 基本分支結構】
Python 條件語句- Python程式語言指定任何非0和非空(null)值為true,0 或者 null為false。
- python 並不支援 switch 語句,所以多個條件判斷,只能用 elif 來實現。
迴圈使用 else 語句
- 在 python 中,while … else 在迴圈條件為 false 時執行 else 語句塊(不是通過break跳出而中斷的)
- 類似 if 語句的語法,如果你的 while 迴圈體中只有一條語句,你可以將該語句與while寫在同一行中
- ——(while (flag): print 'Given flag is really true!')
- for … else 表示這樣的意思,for 中的語句和普通的沒有區別,else 中的語句會在迴圈正常執行完(即 for 不是通過 break 跳出而中斷的)的情況下執行,while … else 也是一樣。
【函式】
- 在 python 中,型別屬於物件,變數是沒有型別的:
a=[1,2,3]
a="Runoob"
以上程式碼中,[1,2,3] 是 List 型別,"Runoob" 是 String 型別,而變數 a 是沒有型別,她僅僅是一個物件的引用(一個指標),可以是 List 型別物件,也可以指向 String 型別物件。
- 引數傳遞:傳不可變物件和傳可變物件。
傳不可變物件:如 整數、字串、元組。如fun(a),傳遞的只是a的值,沒有影響a物件本身。比如在 fun(a)內部修改 a 的值,只是修改另一個複製的物件,不會影響 a 本身。
傳可變物件:如 列表,字典。如 fun(la),則是將 la 真正的傳過去,修改後fun外部的la也會受影響
- 引數
必備引數:須以正確的順序傳入函式。呼叫時的數量必須和宣告時的一樣。
printme("再次呼叫同一函式");
關鍵字引數:允許函式呼叫時引數的順序與宣告時不一致,因為 Python 直譯器能夠用引數名匹配引數值。
printinfo( age=50, name="miki" );
預設引數:預設引數的值如果沒有傳入,則被認為是預設值
def printinfo( name, age = 35 ): "列印任何傳入的字串" print "Name: ", name; print "Age ", age; return;
不定長引數:可能需要一個函式能處理比當初宣告時更多的引數。這些引數叫做不定長引數。加了星號(*)的變數名會存放所有未命名的變數引數。
def printinfo( arg1, *vartuple ): "列印任何傳入的引數" print "輸出: " print arg1 for var in vartuple: print var return;
Python 檔案I/O
- 鍵盤輸入
raw_input([prompt]) 函式從標準輸入讀取一個行,並返回一個字串(去掉結尾的換行符):
input 可以接收一個Python表示式作為輸入,並將運算結果返回。
str = input("請輸入:") print "你輸入的內容是: ", str
請輸入:[x*5 for x in range(2,10,2)] 你輸入的內容是: [10, 20, 30, 40]
- 開啟和關閉檔案
必須先用Python內建的open()函式開啟一個檔案,建立一個file物件,相關的方法才可以呼叫它進行讀寫。
File 物件的 close()方法重新整理緩衝區裡任何還沒寫入的資訊,並關閉該檔案,這之後便不能再進行寫入。
write()方法可將任何字串寫入一個開啟的檔案。需要重點注意的是,Python字串可以是二進位制資料,而不是僅僅是文字。
tell()方法告訴你檔案內的當前位置
seek(offset [,from])方法改變當前檔案的位置。
Python 異常處理
- 兩個非常重要的功能來處理python程式在執行中出現的異常和錯誤。
異常處理;
斷言(Assertions);
- 異常處理
try的工作原理是,當開始一個try語句後,python就在當前程式的上下文中作標記,這樣當異常出現時就可以回到這裡,try子句先執行,接下來會發生什麼依賴於執行時是否出現異常。
try: fh = open("testfile", "w") fh.write("這是一個測試檔案,用於測試異常!!") except IOError: print "Error: 沒有找到檔案或讀取檔案失敗" else: print "內容寫入檔案成功" fh.close()
- 觸發異常
可以使用raise語句自己觸發異常
# 定義函式 def mye( level ): if level < 1: raise Exception,"Invalid level!" # 觸發異常後,後面的程式碼就不會再執行 try: mye(0) # 觸發異常 except Exception,err: print 1,err else: print 2
- 使用者自定義異常
通過建立一個新的異常類,程式可以命名它們自己的異常。