python ---->學習筆記
參考head first Python整理
列表:(類似陣列)編號從0開始,資料型別不那麼重要。它在記憶體中類似堆疊結構,從底到上。
movies = []
numbers = ["one","two","three"] # 定義一個列表,可以直接print
numbers[1] # 中括號訪問列表
len(numbers) # 計算列表長度
numbers.append("four") # 在列表末尾增加一個數據項
numbers.pop() # 在列表末尾刪除資料項
numbers.extend("five") # 在列表末尾增加一個數據項
numbers.remove("two") # 在列表中找到並刪除一個特定的資料項
numbers.insert(0 , "zero") # 在某個特定的位置前面增加一個數據項
類表可以包含混合型別的資料,比如字串和數字,任意型別也可以。
迭代處理列表,利用內建的for迴圈,例如:
numbers = ["one","two","three","four","five"]
for num in numbers:
print(num) ----> 組
for迴圈:可以處理任意大小的類表
列表是動態的,但是訪問一個不存在的資料項,python會產生一個IndexError,表示越界。
字串可以使用雙引號,也可以使用單引號。
識別符號規則:字母或“_”開頭,不允許%$&開頭
大小寫敏感:msg ≠ MSG
列表可以巢狀列表,可以巢狀任意多層的列表
numbers = ["one","two","three",["four","five","six",["seven","eight","nine"]]]
numbers[3][3][1] = eight
python內建函式(BIF):
isinstance() # 檢查某個特定識別符號是否包含某個特定型別的資料。
numbers = ["one","two","three"]
isinstance(numbers,list) # 判斷numbers是否是列表
語法:
if xxx:
true組
else:
false組
def functionName(params):
function code suite ----> 函式程式碼組
suite組:python程式碼塊,通過縮排指示分組。
BIF內建函式:
input() 、isinstance()、len()、print()、open()、range()、type()、dir()..........
註釋:
多行註釋 ''' '''
單行註釋 #
import sys;
sys.path # 檢視模組路徑
range()用法:
for num in range(4): # 返回一個迭代器,根據需要生成一個指定範圍的數字列表
print(num)
檔案操作
_file = open("fileName")
_file.readLine() # 從檔案讀取一行
_file.seek(0) # 返回檔案開頭處
for eachLine in _file:
eachLine.trip().split(":") # 去掉空白符;以":"為符號分隔符分割字串,返回字串列表
eachLine.trip().split(":",1) # 去掉空白符;以":"為符號分隔符分割字串,數字1表示把字串分解為兩個部分,返回字串列表
eachLine.find("python") # 查詢“python”字串,不存在則返回-1,如果存在則返回在原字串的索引位置
異常處理
try:
code
except:
fail recovery code
finally:
release
或者
try:
with xxx as xx: # 上下文管理協議
xxxx
except xxx as xx: # 給異常起個名字
xxxx
遇到的Exception:
ValueError/IOError
兩種型別的列表:
①可以改變型別的列表 ----> 中括號 ----> 可變列表
②一旦建立就不能改變的列表 ----> 小括號 ----> 不可變列表(元組)
OS模組:
import os
os.path.exists("fileName") # 判斷檔案是否存在
os.getcwd() # 獲取當前地工作目錄
python中的字串是不可變的,一旦建立一個字串,它就不會再改變了。
記憶體管理技術???
變數 ----> 引用 ----> 資料物件 ----> 字串
not # 取反
in # 測試成員關係
locals() # 返回當前作用域中定義的所有名的一個集合
print() # 預設是輸出到螢幕,可以通過指定sys.stdout輸出到一個指定的檔案
pickle標準庫
dump() # 儲存資料
load() # 恢復資料
函式預設值問題:
print(value,sep='',end='\n',file=sys.stdout) # 螢幕
print('abc',file='temp.txt') #檔案
方法串鏈:從左往右
函式串鏈:從右往左
排序:
原地排序(in-place sort)
sort() # 排序後替換原來的資料,原來的資料的順序會丟失
複製排序(copied sort)
sorted() # 排序後返回一個原來資料的有序副本,原來的資料的順序不會丟失,預設是升序排序
列表推導???
去重:
思路一:建立一個新的列表,從原來的列表中取出一個元素,判斷一個元素是否在新的列表中,如果不存在則新增,如果存在則去掉。
思路二:使用BIF set(),建立一個空集合
工廠函式???
字典:將資料值和鍵關聯。維護關聯關係,而不是順序。
定義字典:numbers ={} 或者numbers = dict()
訪問字典中的元素:使用中括號,指定鍵
面向物件程式設計模型
基礎概念:類的方法,類的屬性,例項
class Numbers:
def __init__(self):
# coding here
由關鍵字class建立物件
初始化物件機制:__init__()[可以用來定製物件的初始化狀態]
實現物件的建立:類名的呼叫賦值給相應的變數名,例如 num = Numbers()
定義一個類,即定義了一個定製工廠函式。
num = Numbers() 的呼叫python的內部轉換:Numbers().__init__(num),num物件例項識別符號賦值到self引數
目標識別符號賦值到self引數,self引數可以幫助標識要處理哪個物件例項的資料(self指向當前物件例項);每個方法的第一個引數都是self(python要求每個方法的第一個引數為呼叫物件例項???)
可以使用點記法訪問物件中的屬性
自建立的類可以繼承python內部的類
class numbers(list):
def __init__(self, n_name):
list.__init__([])
self.name = n_name
python標準模組:
string
http.server
glob
cgitb
cgi
pickle
json
urllib/urllib2
sys
os
sqlite3
time
unittest/doctest