fluent python 讀書筆記 第一章

2021-08-11 11:24:34 字數 1076 閱讀 8487

魔術方法(magic method)是特殊方法的暱稱,又稱為雙下方法(dunder method),比如__getitem__

collections.namedtuple()可以構建乙個簡單的類,如:card = collections.namedtuple('card', ['rank', 'suit'])

__getitem__可以使物件可以使用索引

random.choice()可以從乙個序列中隨機選出乙個元素

如何使用特殊方法:特殊方法的存在是為了被python直譯器呼叫的,我們通過內建的函式(例如len、str等)來使用特殊方法,這些內建函式不僅會呼叫特殊方法,而且對於內建的類來說,它們的速度更快

math.hypot(x,y)用來求模,sqrt(x^2 + y^2)

__repr____str__的區別:後者是在str()或者print()函式被使用時被呼叫,前者則是在互動環境下輸入物件名也可以呼叫,兩者都是用來改變物件的輸出方式

bool(x)背後是呼叫x.__bool__()的結果,如果不存在__bool__方法,那麼bool(x)會嘗試呼叫x.__len__()

doctest兩種使用方式:

1.互動命令列執行 python -m doctest -v ***.py

2.使用doctest.testmod()

舉個栗子:

def

just

(x):

""" >>> just(5)

5>>> just(0)

0"""

if x:

return x

else:

return

0if __name__ == "__main__":

import doctest

doctest.testmod(verbose=true)

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...