一、內容概要
- 函數式編程:注意不是“函數編程”,多了一個“式”;
- 模塊:如何使用模塊;
- 面向對象編程:面向對象的概念、屬性、方法、繼承、多態等;
- 定製類:利用 Python 的特殊方法定製類。
二、學習目標
- 掌握函數式編程;
- 掌握面向對象編程;
- 能夠編寫模塊化的程序。
三、函數式編程
- 什麼是函數式編程?
函數:function
函數式:functional ,一種編程範式,是一種抽象計算的編程模式。
函數式編程的特點:(1)把計算視爲函數而非指令;
(2)純函數式編程:不需要變量,沒有副作用,測試簡單;
(3)支持高階函數,代碼簡潔。
Python 支持的函數式編程:(1)不是純函數式編程:允許有變量;
(2)支持高階函數:函數也可以作爲變量傳入;
(3)支持閉包:有了閉包就能返回函數;
(4)有限度地支持匿名函數。
2. 高階函數
- 變量可以指向函數
例:>>> abs(-10) ==> 10
>>> f = abs #變量 f 指向函數abs()
>>> f(-10) ===> 10 # 效果相同
- 函數名其實就是指向函數的變量
例:>>> abs = len
>>> abs (-10) ===> 報錯
>>> abs ( [ 1, 2, 3 ] ) ===> 3
- 高階函數:能接收函數做參數的函數
變量可以指向函數;
函數的參數可以接收變量;
一個函數可以接收另一個函數作爲參數;
能接收函數做參數的函數就是高階函數。
例1. 定義一個函數,接收 x, y, f 三個參數,其中 x, y 是數值,f 是函數。
>>> def add (x, y, f) :
return f (x) + f (y)
>>> add (-5, 9, abs) ===> 14
例2. 利用 add(x, y, f) 函數,計算:
>>> import math
>>> def add(x, y, f):
return f(x) + f(y)>>> print add(25, 9, math.sqrt)
# 輸出結果
8.0