21.標準Type的分類
作者將標準Type分成三個Model,以搞清相互之間的關係,以及如何動作。
①Storage Model:
| Storage Model Category |
Python Types That Fit Category |
| Scalar/atom |
Numbers (all numeric types), strings (all are literals) |
| Container |
Lists, tuples, dictionaries |
String不被看成Container是因為沒有Character這個基本Type。
②Update Model:
| Update Model Category |
Python Types That Fit Category |
| Mutable |
Lists, dictionaries |
| Immutable |
Numbers, strings, tuples |
Number和String也是Immutable,儘管如下語句:
x = 'Python numbers and strings'
x = 'are immutable?!? What gives?'
i = 0
i = i + 1
但其實x、i並非被更改了值,而是系統產生了新的對象,然後將x、i指向這個新的對象,原來的對象將被記憶體回收。通過查看id(x)可以看出其前後的差別。
③Access Model:
| Access Model Category |
Python Types That Fit Category |
| Direct |
Numbers |
| Sequence |
Strings, lists, tuples |
| Mapping |
Dictionaries |
綜合:
Data-Type |
Storage-Model |
Update-Model |
Access-Model |
Numbers |
Scalar |
Immutable |
Direct |
Strings |
Scalar |
Immutable |
Sequence |
Lists |
Container |
Mutable |
Sequence |
Tuples |
Container |
Immutable |
Sequence |
Dictionaries |
Container |
Mutable |
Mapping |