python學習筆記之函式及其高階特性
阿新 • • 發佈:2019-01-31
一.定義函式
• def關鍵字,依次寫出函式名、括號、括號中的引數和冒號 : • 在縮排塊中編寫函式體,函式的返回值用 return 語句返回。 def 函式名(): 函式體 return 返回值1,返回值2
二.呼叫函式
Python 內建了很多有用的函式,我們可以直接呼叫: • abs() • cmp() • 資料型別轉換函式: int(), float(), str(),unicode(),bool() 函式名() 實現列印返回值: print 函式名() 總結: 定義函式時,函式不執行; 呼叫函式時, 函式才執行;
三.理解函式名
•函式名與變數名類似,其實就是指向一個函式物件的引用; •給這個函式起了一個“別名”:函式名賦給一個變數
四.空函式
• 定義一個什麼事也不做的空函式,可以用 pass 語句; • pass 可以用來作為佔位符,還沒想好怎麼寫函式的程式碼,就可以先放一個 pass ,讓程式碼能執行起來 def nofunc(): pass
五.引數檢查
• 呼叫函式時,如果引數個數不對,Python 直譯器會自動檢查出來,並丟擲 TypeError; • 如果引數型別不對,Python 直譯器就無法幫我們檢查。 • 資料型別檢查可以用內建函式 isinstance 實現函式返回值 函式可以返回多個值嗎? 那編寫python程式,思考下: 定義一個函式func,傳入兩個數字,返回兩個數字的平均值與最大值。 def fun(*args): """ 返回最大值和最小值 :param args: 傳入多個數值 :return: 最大值, 最小值 """ # 實質上 python 只能返回一個值; # 間接通過元組返回多個值 ;return max(args), min(args)
六. 函式返回值
• 函式返回值用return關鍵字; • 返回一個 tuple 可以省略括號; • Python 的函式返回多值其實就是返回一個 tuple • 函式執行完畢也沒有 return 語句時,自動 return None
七.函式引數
•預設引數可以降低呼叫函式的難度。 定義一函式,計算x值的n次方。那如果計算x平方時只需要傳入x值時怎麼解決? 預設引數注意事項: •有多個引數時,變化大放前面,變化小的放後面; •必選引數在前,預設引數在後
八.預設引數
預設函式容易出錯點: 試一試:先定義一個函式,傳入一個 list,新增一個END 再返回.
九.可變引數
- 可變引數就是傳入的引數個數是可變的,可以是 1 個、2 個 到任意個,還可以是 0 個。*args 以數學題為例子,給定一組數字 a,b,c......, 請計算 a 2 + b 2 + c2+ ...... 如果已經有一個 list 或者 tuple,要呼叫一個可變引數怎麼辦? - Python 允許你在 list 或 tuple 前面加一個 * 號; - 把 list 或 tuple 的元素變成可變引數傳進去; largs = [1,2,3] func(largs[0],largs[1],largs[2]) func(*largs)
十.關鍵字引數
•關鍵字引數允許你傳入 0 個或任意個含引數名的引數;
•這些關鍵字引數在函式內部自動組裝為一個 dict;
•關鍵字引數用**kwargs
kwargs 可以改為其他變數名;
def inuser(name, age, **kwargs): # kwargs 實質上是一個字典 ;
print name, name, kwargs
inuser("user1" 12 city="xi'an" birth="20180101")
十一.引數組合
•引數組合是指可以必選引數、 預設引數、 可變引數和關鍵 字引數一起使用。 •引數定義的順序必須是:必選引數、 預設引數、可變引數和 關鍵字引數。
十二.引數總結
• 必選引數 •預設引數:預設引數一定要用不可變物件 •可變引數:*args 是可變引數,args 接收的是一個 tuple •關鍵字引數:**kw 是關鍵字引數,kw 接收的是一個dict •對於任意函式,都可以通過類似 func(*args, **kw) 的形式呼叫它
十三.變數的作用域
• 區域性變數:只能在函式內部使用的變數 • 全域性變數:在整個程式中使用的變數 • global關鍵字:強制將區域性變數轉換為全域性變數 # 全域性變數 num = 1 def fun(): # global 宣告 num 為全域性變數 global num # 區域性變數 num = 5 fun() print num 5
十四.高階特性
1.迭代 是否可以for迴圈遍歷的物件; isinstance判斷是否可迭代;2.列表生成式 生成列表的公式 需求: 生成一個列表, 返回1-100中偶數的平方; 變異的列表生成式: 練習:找出/etc下檔案中以.conf結尾的檔案; 提示: - os.listdir("/etc") - s.enswith(".conf") 3.生成器 *為什麼需要生成器? •通過列表生成式,我們可以直接建立一個列表,受到記憶體限制,列表容量肯定是有限的; •建立一個包含 100 萬個元素的列表,佔用很大的儲存空間 生成器是什麼? •在迴圈的過程中不斷推算出後續的元素呢?這樣就不必建立完整的 list,從而節省大量的空間。 在 Python 中,這種一邊迴圈一邊計算的機制,稱為生成器(Generator) 怎麼建立生成器? •把一個列表生成式的 [] 改成 () •使用g.next()方法依次讀取元素(麻煩) 使用 for 迴圈(推薦) python程式設計:著名的斐波拉契數列(Fibonacci),除第一個和第二個數外,任意一個數都可由前兩個數相加得到:1, 1, 2, 3, 5, 8, 13, 21,...