1. 程式人生 > >python ---->學習筆記

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