fluent python 讀書筆記(七)

2021-08-20 09:21:38 字數 713 閱讀 7731

第六章教我們使用設計模式

我沒看太懂

簡單總結一下:

策略模式需要上下文,需要乙個大的策略,同時底下有好幾個單獨策略

命令模式完全沒看懂

語法糖(乾貨)

如何找出我們這一頁所定義的這麼多函式(策略)中的最佳策略?

通常我們又不太想每次新想乙個策略就改一次我們的表,於是我們可以這樣實現:

1.用列表推導找符合條件的函式

缺點:需要我們定義函式的名字時搞得特別一點

promos = [globals()[name] for name in globals if name.endswith("_promo") and name != 'best_promo']

2.用裝飾器

缺點:需要在新建的函式前加點@語句

registry = 

def register(func):

return func

3.用inspect

缺點:需要單獨開闢乙個模組出來

import inspect

import promotions

promos = [func for name, func in inspect.getmembers(promotions, inspect.isfunction)]

Fluent Python讀書筆記 二

特殊方法的存在是為了被python直譯器呼叫的,自己並不需要呼叫它。所以使用len object 而不是object.len 如果object是乙個自定義類的物件,python會自己呼叫其中由你實現的 len 方法,而如果是python內建的型別 list,str,bytearray等 cpytho...

Fluent Python讀書筆記 三

容器序列 list tuple和collections.deque這些序列可以存放不同型別的資料。存放的是它們所包含的任意型別的物件的引用。扁平序列 str bytes bytearray memoryview和array.array,這類序列只能容納一種型別。存放的是值而不是引用,扁平序列其實是一...

fluent Python 讀書筆記(二)

對書中1 2 示例中的筆記 1.我們自定義實現乙個類,如何實現這個類的加法,乘法,模等性質呢?以二維向量為例。from math import hypot class vector def init self,x 0,y 0 self.x x self.y y def repr self retur...