04.12 python經典之作,斯坦福教授都稱讚這本書適合任何初學者!


python經典之作,斯坦福教授都稱讚這本書適合任何初學者!


內容簡介 · · · · · ·

後臺私信小編“pdf”獲取這本書籍!

Google和YouTube由於Python的高可適應性、易於維護以及適合於快速開發而採用它。如果你想要編寫高質量、高效的並且易於與其他語言和工具集成的代碼,《Python學習手冊:第4 版》將幫助你使用Python快速實現這一點,不管你是編程新手還是Python初學者。本書是易於掌握和自學的教程,根據作者Python專家Mark Lutz的著名培訓課程編寫而成。

《Python學習手冊:第4版》每一章都包含關於Python語言的關鍵內容的獨立的一課,並且包含了一個獨特的“練習題”部分,其中帶有實際的練習和測試,以便你可以練習新的技能並隨著學習而測試自己的理解。你會發現眾多帶有註釋的示例以及圖表,它們將幫助你開始學習Python 3.0。

《Python學習手冊:第4版》包括以下內容:

學習Python的主要內建對象類型:數字、列表和字典。

使用Python語句創建和處理對象,並且學習Python的通用語法模型。

使用函數構造和重用代碼,函數是Python的基本過程工具。

學習Python模塊:封裝語句、函數以及其他工具,從而可以組織成較大的組件。

Python的面向對象編程工具,用於組織程序代碼。

學習異常處理模型,以及用於編寫較大程序的開發工具。

瞭解包括裝飾器、描述器、元類和Unicode處理等高級Python工具。


作為全球Python培訓界的領軍人物,《Python學習手冊:第4版》作者Mark Lutz是Python最暢銷書籍的作者,也是Python社區的先驅。

Mark 是O'Reilly出版的《Programming Python》和《Python Pocket Reference》的作者,這兩本書於2009年都已經出版了第3版。Mark自1992年開始接觸Python,1995年開始撰寫有關Python的書籍,從1997年開始教授Python課程。截止到2009年,他已經開辦了225個Python短期培訓課程,教授了大約3500名學習者,銷售了大約25萬冊有關Python的書籍。許多書被翻譯成十多種語言。

此外,Mark擁有威斯康星大學計算機科學學士和碩士學位,在過去的25年中,他主要從事編譯器、編程工具、腳本程序以及各種客戶端/服務器系統方面的工作。你也可以通過訪問http://www.rmi.net/~lutz與他取得聯繫。

目錄 · · · · · ·

前言1

第一部分 使用入門

第1章 問答環節19

人們為何使用Python19

軟件質量20

開發效率21

Python是“腳本語言”嗎21

好吧,Python的缺點是什麼呢23

如今誰在使用Python23

使用Python可以做些什麼24

系統編程25

用戶圖形接口25

Internet腳本25

組件集成26

數據庫編程26

快速原型27

數值計算和科學計算編程27

遊戲、圖像、人工智能、XML、機器人等27

Python如何獲得支持28

Python有哪些技術上的優點28

面向對象28

免費29

可移植29

功能強大30

可混合31

簡單易用31

簡單易學32

Python和其他語言比較起來怎麼樣32

本章小結33

本章習題33

習題解答34

Python是工程,不是藝術34

第2章 Python如何運行程序36

Python解釋器簡介36

程序執行37

程序員的視角37

Python的視角39

執行模塊的變體41

Python實現的替代者42

執行優化工具43

凍結二進制文件44

其他執行選項45

未來的可能性46

本章小結46

本章習題47

習題解答47

第3章 如何運行程序48

交互提示模式下編寫代碼48

交互地運行代碼49

為什麼使用交互提示模式51

使用交互提示模式52

系統命令行和文件54

第一段腳本55

使用命令行運行文件56

使用命令行和文件57

UNIX可執行腳本(#!)58

UNIX env查找技巧59

點擊文件圖標60

在Windows中點擊圖標60

input的技巧61

圖標點擊的其他限制63

模塊導入和重載63

模塊的顯要特性:屬性65

import和reload的使用注意事項68

使用exec運行模塊文件69

IDLE用戶界面70

IDLE基礎71

使用IDLE72

高級IDLE工具74

其他的IDE74

其他啟動選項76

嵌入式調用76

凍結二進制的可執行性77

其他的啟動選擇77

未來的可能77

我應該選用哪種78

調試Python代碼78

本章小結80

本章習題80

習題解答80

第一部分 練習題81

第二部分 類型和運算

第4章 介紹Python對象類型87

為什麼使用內置類型88

Python的核心數據類型88

數字90

字符串92

序列的操作92

不可變性94

類型特定的方法94

尋求幫助96

編寫字符串的其他方法97

模式匹配98

列表98

序列操作98

類型特定的操作99

邊界檢查100

嵌套100

列表解析101

字典103

映射操作103

重訪嵌套104

鍵的排序:for 循環105

迭代和優化107

不存在的鍵:if 測試107

元組109

為什麼要用元組109

文件110

其他文件類工具111

其他核心類型111

如何破壞代碼的靈活性113

用戶定義的類114

剩餘的內容115

本章小結115

本章習題116

習題解答116

第5章 數字117

Python的數字類型117

數字常量118

內置數學工具和擴展119

Python表達式操作符120

在實際應用中的數字125

變量和基本的表達式125

數字顯示的格式126

比較:一般的和連續的127

str和repr顯示格式128

除法: 傳統除法、Floor除法和真除法129

整數精度133

複數133

十六進制、八進制和二進制記數134

位操作136

其他的內置數學工具137

其他數字類型139

小數數字139

分數類型141

集合145

布爾型151

數字擴展152

本章小結153

本章習題153

習題解答153

第6章 動態類型簡介155

變量、對象和引用156

類型屬於對象,而不是變量157

對象的垃圾收集158

共享引用159

共享引用和在原處修改161

共享引用和相等163

動態類型隨處可見164

本章小結165

本章習題165

習題解答165

第7章 字符串167

字符串常量169

單雙引號字符串是一樣的170

用轉義序列代表特殊字節171

raw字符串抑制轉義173

三重引號編寫多行字符串塊175

實際應用中的字符串176

基本操作176

索引和分片177

為什麼要在意:分片181

字符串轉換工具181

修改字符串184

字符串方法185

字符串方法實例:修改字符串187

字符串方法實例:文本解析189

實際應用中的其他常見字符串方法190

最初的字符串模塊(在Python 3.0中刪除)191

字符串格式化表達式192

更高級的字符串格式化表達式194

基於字典的字符串格式化196

字符串格式化調用方法196

基礎知識197

添加鍵、屬性和偏移量198

添加具體格式化198

與%格式化表達式比較200

為什麼用新的格式化方法203

通常意義下的類型分類206

同樣分類的類型共享其操作集合206

可變類型能夠在原處修改207

本章小結208

本章習題208

習題解答208

第8章 列表與字典210

列表210

實際應用中的列表213

基本列表操作213

列表迭代和解析213

索引、分片和矩陣214

原處修改列表215

字典220

實際應用中的字典222

字典的基本操作222

原處修改字典223

其他字典方法224

語言表225

字典用法注意事項226

為什麼要在意字典接口229

創建字典的其他方法230

Python 3.0中的字典變化231

本章小結237

本章習題237

習題解答237

第9章 元組、文件及其他239

元組239

實際應用中的元組241

為什麼有了列表還要元組243

文件243

打開文件244

使用文件245

實際應用中的文件246

其他文件工具252

重訪類型分類254

為什麼要在意操作符重載255

對象靈活性255

引用 VS 拷貝256

比較、相等性和真值258

Python 3.0的字典比較260

Python中真和假的含義261

Python的類型層次263

Type對象263

Python中的其他類型265

內置類型陷阱265

賦值生成引用,而不是拷貝265

重複能夠增加層次深度266

留意循環數據結構266

不可變類型不可以在原處改變267

本章小結267

本章習題268

習題解答268

第二部分練習題269

第三部分 語句和語法

第10章 Python語句簡介275

重訪Python程序結構275

Python的語句276

兩個if的故事278

Python增加了什麼279

Python刪除了什麼279

為什麼使用縮進語法281

幾個特殊實例283

簡短實例:交互循環285

一個簡單的交互式循環285

對用戶輸入數據做數學運算287

用測試輸入數據來處理錯誤288

用try語句處理錯誤289

嵌套代碼三層290

本章小結290

本章習題291

習題解答291

第11章 賦值、表達式和打印292

賦值語句292

賦值語句的形式293

序列賦值294

Python 3.0中的擴展序列解包297

多目標賦值語句301

增強賦值語句302

變量命名規則305

Python的廢棄協議306

表達式語句308

表達式語句和在原處的修改309

打印操作310

Python 3.0的print函數311

Python 2.6 print語句313

打印流重定向315

版本獨立的打印318

為什麼要注意print和stdout319

本章小結320

本章習題321

習題解答321

第12章 if測試和語法規則322

if語句322

通用格式322

基本例子323

多路分支323

Python語法規則325

代碼塊分隔符326

語句的分隔符328

一些特殊情況329

真值測試330

if/else三元表達式332

為什麼要在意布爾值334

本章小結335

本章習題335

習題解答335

第13章 while和for循環336

while循環336

一般格式336

例子337

break、continue、pass和循環else338

一般循環格式338

pass338

continue340

break340

循環else341

為什麼要在意“模擬C 語言的while循環”342

for循環343

一般格式343

例子344

為什麼要在意“文件掃描”349

編寫循環的技巧350

循環計數器:while和range351

非完備遍歷:range和分片352

修改列表:range353

並行遍歷:zip和map354

產生偏移和元素:enumerate357

本章小結358

本章習題358

習題解答359

第14章 迭代器和解析,第一部分360

迭代器:初探360

文件迭代器361

手動迭代:iter和next363

其他內置類型迭代器365

列表解析:初探367

列表解析基礎知識368

在文件上使用列表解析369

擴展的列表解析語法370

其他迭代環境371

Python 3.0中的新的可迭代對象375

range迭代器376

map、zip和filter迭代器377

多個迭代器 VS單個迭代器378

字典視圖迭代器379

其他迭代器主題381

本章小結381

本章習題381

習題解答382

第15章 文檔383

Python文檔資源383

#註釋384

dir函數384

文檔字符串:__doc__385

PyDoc:help函數388

PyDoc:HTML報表390

標準手冊集393

網絡資源394

已出版的書籍394

常見編寫代碼的陷阱395

本章小結397

本章習題397

習題解答397

第三部分練習題398

第四部分 函數

第16章 函數基礎403

為何使用函數404

編寫函數405

def語句406

def語句是實時執行的407

第一個例子:定義和調用408

定義408

調用408

Python中的多態409

第二個例子:尋找序列的交集410

定義410

調用411

重訪多態411

本地變量412

本章小結413

本章習題413

習題解答413

第17章 作用域415

Python作用域基礎415

作用域法則416

變量名解析:LEGB原則418

作用域實例419

內置作用域420

在Python 2.6中違反通用性422

global語句422

最小化全局變量423

最小化文件間的修改424

其他訪問全局變量的方法426

作用域和嵌套函數427

嵌套作用域的細節427

嵌套作用域舉例427

nonlocal語句433

nonlocal基礎433

nonlocal應用435

為什麼使用nonlocal437

本章小結440

本章習題441

習題解答442

第18章 參數444

傳遞參數444

參數和共享引用445

避免可變參數的修改447

對參數輸出進行模擬448

特定的參數匹配模型449

基礎知識449

匹配語法450

細節452

關鍵字參數和默認參數的實例452

任意參數的實例455

Python 3.0 Keyword-Only參數459

min調用462

滿分463

加分點464

結論465

一個更有用的例子:通用set函數465

模擬Python 3.0 print函數466

使用Keyword-Only參數467

為什麼要在意:關鍵字參數469

本章小結469

本章習題470

習題解答470

第19章 函數的高級話題472

函數設計概念472

遞歸函數474

用遞歸求和474

編碼替代方案475

循環語句VS遞歸476

處理任意結構477

函數對象:屬性和註解478

間接函數調用478

函數內省479

函數屬性480

Python 3.0中的函數註解481

匿名函數: lambda483

lambda表達式483

為什麼使用lambda484

如何(不要)讓Python代碼變得晦澀難懂486

嵌套lambda和作用域487

為什麼要在意:回調488

在序列中映射函數:map489

函數式編程工具:filter和reduce490

本章小結492

本章習題492

習題解答492

第20章 迭代和解析,第二部分494

回顧列表解析:函數式編程工具494

列表解析與map495

增加測試和嵌套循環496

列表解析和矩陣498

理解列表解析499

為什麼要在意:列表解析和map500

重訪迭代器:生成器501

生成器函數:yield VS return502

生成器表達式:迭代器遇到列表解析506

生成器函數 VS 生成器表達式507

生成器是單迭代器對象508

用迭代工具模擬zip和map510

為什麼你會留意:單次迭代514

內置類型和類中的值生成515

Python 3.0解析語法概括516

解析集合和字典解析517

針對集合和字典的擴展的解析語法517

對迭代的各種方法進行計時518

對模塊計時519

計時腳本519

計時結果520

計時模塊替代方案523

其他建議527

函數陷阱528

本地變量是靜態檢測的528

默認和可變對象529

沒有return語句的函數531

嵌套作用域的循環變量532

本章小結532

本章習題532

習題解答533

第四部分練習題533

第五部分 模塊

第21章 模塊:宏偉藍圖539

為什麼使用模塊540

Python程序架構540

如何組織一個程序541

導入和屬性541

標準庫模塊543

import如何工作543

1.搜索544

2.編譯(可選)544

3.運行545

模塊搜索路徑545

配置搜索路徑547

搜索路徑的變動548

sys.path列表548

模塊文件選擇549

高級的模塊選擇概念550

第三方工具:distutils550

本章小結551

本章習題551

習題解答551

第22章 模塊代碼編寫基礎553

模塊的創建553

模塊的使用554

import語句554

from語句555

from *語句555

導入只發生一次555

import和from是賦值語句556

文件間變量名的改變557

import和from的對等性557

from語句潛在的陷阱558

模塊命名空間560

文件生成命名空間560

屬性名的點號運算562

導入和作用域562

命名空間的嵌套563

重載模塊564

reload基礎565

reload實例566

為什麼要在意:模塊重載567

本章小結568

本章習題568

習題解答568

第23章 模塊包570

包導入基礎570

包和搜索路徑設置571

__init__.py包文件572

包導入實例573

包對應的from語句和import語句574

為什麼要使用包導入575

三個系統的傳說576

包相對導入578

Python 3.0中的變化578

相對導入基礎知識579

為什麼使用相對導入581

相對導入的作用域583

模塊查找規則總結583

相對導入的應用584

為什麼要在意:模塊包589

本章小結590

本章習題590

習題解答590

第24章 高級模塊話題592

在模塊中隱藏數據592

最小化from *的破壞:_X和__all__593

啟用以後的語言特性593

混合用法模式:__name__和__main__594

以__name__進行單元測試595

使用帶有__name__的命令行參數596

修改模塊搜索路徑599

Import語句和from語句的as擴展599

模塊是對象:元程序600

用名稱字符串導入模塊603

過渡性模塊重載604

模塊設計理念607

模塊陷阱607

頂層代碼的語句次序的重要性608

from複製變量名,而不是連接609

from *會讓變量語義模糊610

reload不會影響from導入610

reload、from以及交互模式測試611

遞歸形式的from導入無法工作612

本章小結613

本章習題613

習題解答613

第五部分練習題614

第六部分 類和OOP

第25章 OOP:宏偉藍圖619

為何使用類620

概覽OOP621

屬性繼承搜索621

類和實例623

類方法調用624

編寫類樹624

OOP是為了代碼重用627

本章小結629

本章習題629

習題解答630

第26章 類代碼編寫基礎631

類產生多個實例對象631

類對象提供默認行為632

實例對象是具體的元素632

第一個例子632

類通過繼承進行定製635

第二個例子635

類是模塊內的屬性637

類可以截獲Python運算符638

第三個例子639

為什麼要使用運算符重載641

世界上最簡單的Python類641

類與字典的關係644

本章小結646

本章習題646

習題解答646

第27章 更多實例649

步驟1:創建實例650

編寫構造函數650

在進行中測試651

以兩種方式使用代碼652

版本差異提示654

步驟2:添加行為方法654

編寫方法656

步驟3:運算符重載658

提供打印顯示658

步驟4:通過子類定製行為659

編寫子類660

擴展方法:不好的方式660

擴展方法:好的方式661

多態的作用663

繼承、定製和擴展664

OOP:大思路664

步驟5:定製構造函數665

OOP比我們認為的要簡單666

組合類的其他方式667

在Python 3.0中捕獲內置屬性669

步驟6:使用內省工具670

特殊類屬性670

一種通用顯示工具671

實例與類屬性的關係672

工具類的命名考慮673

類的最終形式674

步驟7(最後一步):把對象存儲到數據庫中676

Pickle和Shelve676

在shelve數據庫中存儲對象677

交互地探索shelve678

更新shelve中的對象680

未來方向681

本章小結683

本章習題684

習題解答684

第28章 類代碼編寫細節686

class語句686

一般形式686

例子687

方法689

例子690

調用超類構造函數691

其他方法調用的可能性691

繼承692

屬性樹的構造692

繼承方法的專有化693

類接口技術694

抽象超類695

Python 2.6和Python 3.0的抽象超類696

命名空間:完整的內容698

簡單變量名:如果賦值就不是全局變量698

屬性名稱:對象命名空間698

Python命名空間的“禪”:賦值將變量名分類699

命名空間字典701

命名空間鏈接704

回顧文檔字符串706

類與模塊的關係707

本章小結708

本章習題708

習題解答708

第29章 運算符重載710

基礎知識710

構造函數和表達式:__init__和__sub__711

常見的運算符重載方法711

索引和分片:__getitem__和__setitem__713

攔截分片713

Python 2.6中的分片和索引715

索引迭代:__getitem__716

迭代器對象:__iter__和__next__717

用戶定義的迭代器717

有多個迭代器的對象719

成員關係:__contains__、__iter__和__getitem__721

屬性引用:__getattr__和__setattr__723

其他屬性管理工具725

模擬實例屬性的私有性:第一部分725

__repr__和__str__會返回字符串表達形式726

右側加法和原處加法:__radd__和__iadd__729

原處加法730

Call表達式:__call__731

函數接口和回調代碼732

比較:__lt__、__gt__和其他方法734

Python 2.6的__cmp__方法(已經從Python 3.0中移除了)734

布爾測試:__bool__和__len__735

Python 2.6中的布爾736

對象析構函數:__del__738

本章小結739

本章習題739

習題解答739

第30章 類的設計741

Python和OOP741

通過調用標記進行重載(或不要)742

OOP和繼承:“是一個”關係743

OOP和組合:“有一個”關係744

重訪流處理器746

為什麼要在意:類和持續性748

OOP和委託:“包裝”對象749

類的偽私有屬性751

變量名壓縮概覽751

為什麼使用偽私有屬性752

方法是對象:綁定或無綁定754

在Python 3.0中,無綁定方法是函數756

綁定方法和其他可調用對象757

為什麼要在意:綁定方法和回調函數760

多重繼承:“混合”類760

編寫混合顯示類761

類是對象:通用對象的工廠771

為什麼有工廠772

與設計相關的其他話題773

本章小結773

本章習題774

習題解答774

第31章 類的高級主題775

擴展內置類型775

通過嵌入擴展類型776

通過子類擴展類型777

新式類779

新式類變化780

類型模式變化781

鑽石繼承變動785

新式類的擴展789

slots實例789

類特性793

__getattribute__和描述符795

元類795

靜態方法和類方法796

為什麼使用特殊方法796

Python 2.6和Python 3.0中的靜態方法797

靜態方法替代方案799

使用靜態和類方法800

使用靜態方法統計實例801

用類方法統計實例802

裝飾器和元類:第一部分805

函數裝飾器基礎805

裝飾器例子806

類裝飾器和元類807

更多詳細信息808

類陷阱809

修改類屬性的副作用809

修改可變的類屬性也可能產生副作用810

多重繼承:順序很重要811

類、方法以及嵌套作用域812

Python中基於委託的類:__getattr__和內置函數814

“過度包裝”814

本章小結815

本章習題815

習題解答815

第六部分練習題816

為什麼要在意:大師眼中的OOP821

第七部分 異常和工具

第32章 異常基礎825

為什麼使用異常826

異常的角色826

異常處理:簡明扼要827

默認異常處理器827

捕獲異常828

引發異常829

用戶定義的異常830

終止行為830

為什麼要在意:錯誤檢查832

本章小結833

本章習題833

習題解答834

第33章 異常編碼細節835

try/except/else語句835

try語句分句836

try/else分句839

例子:默認行為840

例子:捕捉內置異常841

try/finally語句841

例子:利用try/finally編寫終止行為842

統一try/except/finally語句843

統一try語句語法845

通過嵌套合併finally和except845

合併try的例子846

raise語句847

利用raise傳遞異常849

Python 3.0異常鏈:raise from849

assert語句850

例子:收集約束條件(但不是錯誤)850

with/as環境管理器851

基本使用852

環境管理協議853

本章小結855

本章習題855

習題解答856

第34章 異常對象857

異常:回到未來858

字符串異常很簡單858

基於類的異常858

類異常例子859

為什麼使用類異常861

內置Exception類864

內置異常分類865

默認打印和狀態866

定製打印顯示867

定製數據和行為868

提供異常細節868

提供異常方法869

本章小結870

本章習題870

習題解答870

第35章 異常的設計872

嵌套異常處理器872

例子:控制流程嵌套873

例子:語法嵌套化874

異常的習慣用法876

異常不總是錯誤876

函數信號條件和raise876

關閉文件和服務器連接877

在try外進行調試878

運行進程中的測試879

關於sys.exc_info879

與異常有關的技巧880

應該包裝什麼881

捕捉太多:避免空except語句881

捕捉過少:使用基於類的分類883

核心語言總結884

Python工具集884

大型項目的開發工具885

本章小結888

第七部分練習題889

第八部分 高級話題注1

第36章 Unicode和字節字符串893

Python 3.0中的字符串修改894

字符串基礎知識895

字符編碼方法895

Python的字符串類型897

文本和二進制文件899

Python 3.0中的字符串應用900

常量和基本屬性900

轉換901

編碼Unicode字符串903

編碼ASCII文本903

編碼非ASCII文本904

編碼和解碼非ASCII文本904

其他Unicode編碼技術905

轉換編碼907

在Python 2.6中編碼Unicode字符串908

使用Python 3.0 Bytes對象911

方法調用912

序列操作913

創建bytes對象的其他方式913

混合字符串類型914

使用Python 3.0(和Python 2.6)bytearray對象915

使用文本文件和二進制文件918

文本文件基礎919

Python 3.0中的文本和二進制模式919

類型和內容錯誤匹配921

使用Unicode文件922

在Python 3.0中讀取和寫入Unicode922

在Python 3.0中處理BOM924

Python 2.6中的Unicode文件927

Python 3.0中其他字符串工具的變化927

re模式匹配模塊927

Struct二進制數據模塊928

pickle對象序列化模塊931

XML解析工具932

本章小結935

本章習題935

習題解答936

第37章 管理屬性938

為什麼管理屬性938

插入在屬性訪問時運行的代碼939

特性940

基礎知識940

第一個例子941

計算的屬性942

使用裝飾器編寫特性943

描述符944

基礎知識945

第一個示例947

計算的屬性949

在描述符中使用狀態信息950

特性和描述符是如何相關的952

__getattr__和__getattribute__953

基礎知識954

第一個示例956

計算屬性958

__getattr__和__getattribute__比較959

管理技術比較960

攔截內置操作屬性963

重訪基於委託的Manager967

示例:屬性驗證970

使用特性來驗證971

使用描述符驗證973

使用__getattr__來驗證974

使用__getattribute__驗證976

本章小結977

本章習題977

習題解答977

第38章 裝飾器979

什麼是裝飾器979

管理調用和實例980

管理函數和類980

使用和定義裝飾器981

為什麼使用裝飾器981

基礎知識982

函數裝飾器982

類裝飾器986

裝飾器嵌套988

裝飾器參數990

裝飾器管理函數和類991

編寫函數裝飾器991

跟蹤調用992

狀態信息保持選項993

類錯誤之一:裝飾類方法997

計時調用1002

添加裝飾器參數1004

編寫類裝飾器1007

單體類1007

跟蹤對象接口1009

類錯誤之二:保持多個實例1012

裝飾器與管理器函數的關係1013

為什麼使用裝飾器(重訪)1015

直接管理函數和類1016

示例:“私有”和“公有”屬性1018

實現私有屬性1019

實現細節之一1021

實現細節之二1024

開放問題1025

Python不是關於控制1029

示例:驗證函數參數1030

目標1030

針對位置參數的一個基本範圍測試裝飾器1031

針對關鍵字和默認泛化1033

實現細節1036

開放問題1038

裝飾器參數 VS 函數註解1039

其他應用程序:類型測試1041

本章小結1042

本章習題1042

習題解答1043

第39章 元類1046

要麼是元類,要麼不是元類1046

提高魔力層次1047

“輔助”函數的缺點1049

元類與類裝飾器的關係:第一回合1051

元類模型1053

類是類型的實例1053

元類是Type的子類1055

Class語句協議1056

編寫元類1058

基本元類1058

定製構建和初始化1059

其他元類編程技巧1060

實例與繼承的關係1063

示例:向類添加方法1064

手動擴展1064

基於元類的擴展1065

元類與類裝飾器的關係:第二回合1067

示例:對方法應用裝飾器1070

用裝飾器手動跟蹤1070

用元類和裝飾器跟蹤1071

把任何裝飾器應用於方法1073

元類與類裝飾器的關係:第三回合1074

“可選的”語言功能1076

本章小結1078

本章習題1078

習題解答1078

第九部分 附錄注2

附錄A 安裝和配置1083

附錄B 各部分練習題的解答 1093


分享到:


相關文章: