標籤:全域 lam lob 依賴 內聚 區分大小寫 元組 ota turn
函數
名字
命名方法(官方方法,駝峰命名法)
命名原則:1.由數字,底線和字母組成,且不能由數字開頭。
2.不能命名關鍵字
3.區分大小寫,大寫為常量
參數
預設值
可變參數 * args
def say_hello(*args): print(args)def main(): a_list = [1, 2, 3, 4, 5, ‘zhangli‘, 24] say_hello(*a_list)if __name__ == ‘__main__‘: main()
關鍵字參數 **kwargs
def say_hello(**kwargs): print(kwargs)def main(): a_set = {‘name‘: ‘zhangli‘,‘age‘: 24, ‘sex‘: ‘female‘} say_hello(**a_set)if __name__ == ‘__main__‘: main()
命名關鍵字參數 *
def foo(a, b, c, *, name, age): print(a+b+c) print(name, ‘:‘, age)def main(): foo(1, 2, 3, name=‘zhang‘, age=24)if __name__ == ‘__main__‘: main()
傳回值
對象
字串
元組
集合
嵌套函數
高階函數 函數裡面再次調用函數
# 通過向函數中傳入函數,可以寫出更通用的代碼
# calc函數中的第二個參數是另一個函數,他代表了一個二元運算
# 所以calc函數變得通用性更強,可以由傳入的第二個參數來決定到底做什麼
# 高內聚, 低耦合 high cohesion low coupling
def calc(my_list, op): total = my_list[0] for index in range(1, len(my_list)): total = op(total, my_list[index]) return totaldef add(x, y): return x + ydef mul(x, y): return x * ydef main(): my_list = [1, 3, 5, 7, 9] print(calc(my_list, add)) print(calc(my_list, mul))if __name__ == ‘__main__‘: main()
# 裝飾器
def record(fn): def wrapper(*args, **kwargs): print(‘準備執行%s函數之前...‘ % fn.__name__) print(args) print(kwargs) # 此行代碼在執行被裝飾的函數 # 在這行代碼的前後我們可以附加其他的代碼 # 這些代碼可以讓我們在執行函數時做一些額外的工作 val = fn(*args, **kwargs) print(‘%s函數執行完成‘ % fn.__name__) return val return wrapper# 通過修飾器修飾f函數,讓f函數在執行時,可以進行更多的操作@record # 合二為一def f(n): if n == 0 or n == 1: return 1 return n * f(n-1)if __name__ == ‘__main__‘: print(f(5))# 裝飾器 讓我們看出函數裡面到底發生了什麼。
lambda函數 (匿名函數)-- 此函數極短,故簡寫,直接寫在放參數的括弧裡
閉包
偏函數
柯裡化
範圍
局部範圍
嵌套範圍
全域範圍
內建範圍
標誌符 LEGB local enclose global build_in (nonlocal global)
類和對象
類的定義
1.類是對象的藍圖和模板,有了類就可以定義對象
2.類最重要的就是資料抽象和行為抽象
3.資料抽象:抽取對象的共有的靜態特徵 -- 屬性
4.行為抽象:抽取對象的共有的行為特徵 -- 行為
對象的關係
use a 依賴關係(作用和反作用)
have a 關聯(普通/ 彙總/合成)(你中有我,我中有你)
is a 繼承關係 從已經有的類建立新類的過程
# 提供繼承資訊的稱為父類(超類/基類)
# 得到繼承資訊的稱為子類(衍生類別/衍生類)
# 通過繼承我們可以將子類中的重複代碼,抽取到父類中。
# 子類通過繼承,並複用這些代碼,來減少重複代碼的編寫
# 將來如果要維護子類的公用代碼,只需要在父類中進行操作即可
七大原則
單一職責原則
開閉原則
依賴倒轉原則
裡氏替換原則
介面隔離原則
合成彙總複用原則
迪米特法則
Python第三周之物件導向之深刻學習