您现在的位置是:首页 > 世界杯 >正文

酋长杯欧冠 (关于酋长杯欧冠 玩法)

发布时间:2022-11-23 23:12:49admin来源:世界杯

导读 酋长杯欧冠 第4 版将帮助你使用Python快速实现这一点,不管你是编程新手还是Python初学者。本书是易于掌握和自学的教程,根据作者Python专...

酋长杯欧冠 第4 版将帮助你使用Python快速实现这一点,不管你是编程新手还是Python初学者。本书是易于掌握和自学的教程,根据作者Python专家Mark Lutz的著名培训课程编写而成。

酋长杯欧冠 第4版每一章都包含关于Python语言的关键内容的独立的一课,并且包含了一个独特的“练习题”部分,其中带有实际的练习和测试,以便你可以练习新的技能并随着学习而测试自己的理解。你会发现众多带有注释的示例以及图表,它们将帮助你开始学习Python 3.0。

学习Python的主要内建对象类型:数字、列表和字典。使用Python语句创建和处理对象,并且学习Python的通用语法模型。使用函数构造和重用代码,函数是Python的基本过程工具。学习Python模块:封装语句、函数以及其他工具,从而可以组织成较大的组件。Python的面向对象编程工具,用于组织程序代码。学习异常处理模型,以及用于编写较大程序的开发工具。了解包括装饰器、描述器、元类和Unicode处理等高级Python工具。

从以下3个方面做出了修改: ■ 覆盖了Python 3.0和Python 2.6,本书强调Python 3.0,但是对Python 2.6中的不同之处给出了提示。 ■ 包含了一些新的章节,主要介绍高级的核心语言话题。 ■ 重新组织了一些已有的材料,并且使用新的示例扩展它们以便更清楚。 我(作者Mark Lutz)在2009年撰写本书这一版时,Python分为两支——Python 3.0是新兴的版本并且不兼容地修改了该语言;Python 2.6保持与大量已有的Python代码向后兼容。尽管Python 3被视作是Python的未来,Python 2仍然使用广泛并且会在未来的几年内与Python 3并列地得到支持。尽管只是同一种语言的不同版本,但Python 3.0几乎无法运行为之前版本编写的代码(单单print从语句修改为函数,听上去更合理,但是,它几乎影响到所有已经编写好的Python程序)。 版本的划分使得程序员和图书作者都陷入了两难的境地。尽管编写一本好像Python 2不存在而只介绍Python 3的图书很容易,但这可能无法满足大量基于已有代码的Python用户的需求。大量已有代码都是针对Python 2编写的,并且它们不会很快过时。尽管现在的初学者更关注Python 3,但如果他们必须使用过去编写的代码,那么就必须熟悉Python 2。所有的第三方库和扩展都移植到Python 3可能还需要数年时间,所以Python 2这一分支可能不完全是临时性的。 

覆盖Python 3.0和Python 2.6 为了解决这一分歧并且满足所有潜在读者的需求,《酋长杯欧冠 》第4版更新为覆盖Python 3.0和Python 2.6(以及Python 3.X和Python 2.X系列的后续发布)。本书针对使用Python 2编程的程序员、使用Python 3的程序员,以及介于这二者之间的程序员。 也就是说,你可以使用本书来学习任何的Python版本。尽管这里主要关注Python 3.0,但Python 2.6的不同之处和工具也都针对使用旧代码的程序员给出了提示。尽管这两个版本大部分是相同的,但它们还是在一些重要的方面有所不同,对此我将指出两者的区别。 例如,在大多数示例中,我们使用Python 3.0的print调用,但是,我也将介绍Python 2.6的print语句,以便使你能够理解较早的代码。我还广泛地介绍了新功能,例如Python 3.0中的nonlocal语句和Python 2.6以及Python 3.0中的字符串的format方法,当较早的Python中没有这样的扩展时,我将会指出来。 如果你初次学习Python并且不需要使用任何遗留代码,我鼓励你从Python 3.0开始,它清理了这一语言中长久以来的一些瑕疵,同时保留了所有最初的核心思想并且添加了一些漂亮的新工具。 当你阅读本书时,很多流行的Python库和工具可能也支持Python 3.0了,特别是在未来的Python 3.1版本中,可以预期文件I/O性能会有较大的提升。如果你使用基于Python 2.X的一个系统,将会发现本书解决了你所关心的问题,并且将帮助你在未来过渡到Python 3.0。 此外,本版也介绍了其他的Python 2和Python 3的发布版本,尽管一些旧的Python 2.X代码可能无法运行本书的所有示例。例如,尽管在Python 2.6和Python 3.0中都有类装饰器,但我们无法在还没有这一功能的旧Python 2.X中使用它。参见前言中的表0-1和表0-2,它们概括了Python 2.6和Python 3.0中的变化。 注意:就在付梓前不久,本书中还添加了关于未来的Python 3.1版的一些突出的扩展的提示,如:字符串format方法调用中的逗号分隔符和自动字段编号、with语句中的多环境管理器语法、针对数字的新方法等。由于Python 3.1的主要目标是优化,本书也直接应用这一新发布。事实上,由于Python 3.1在Python 3.0后接踵而来,并且最新的Python通常是最好的可用Python,在本书中,术语“Python 3.0”通常指的是Python 3.0引入的但在整个Python 3.X版本中都将存在的语言变化。 

新增章 尽管本版的主要目标是针对Python 3.0和Python 2.6更新之前的版本的示例和内容,但我们也增加了5章新内容,以介绍新的主题和增加的内容。 第27章是一个新的类教程,使用更加实际的示例来说明Python面向对象编程的基础知识。 第36章提供了关于Unicode和字节字符串的详细介绍,并且概括了Python 2.6和Python 3.0中字符串和文件的区别。 第37章介绍了特性这样的管理属性工具,并且对描述符给出了新的介绍。 第38章介绍了函数和类装饰器,并且给出了全面的示例。 第39章介绍了元类,并且将它们与描述符进行了比较和对比。 第27章针对Python中的类和OOP提供了一个渐进的、按部就班的教程。它基于我在近年所教授的培训课程中已经使用的一个现场展示,但是,为了在本书中使用已经对它进行了修改。该章设计来在比此前的示例更为实际的背景中展示OOP,并且说明类概念如何综合运用于较大的、实用的程序中。我期望它在这里与在实际的课程中一样有效。 后面新增的4章收录到了本书的最后一个新增部分中,即“高级话题”部分。尽管这些主题从技术上讲都属于核心语言,但不是每个Python程序员都需要深入了解Unicode文本或元类的细节。因此,这4章单独放到了新的部分中,并且正式地作为可选的阅读材料。例如,关于Unicode和二进制数据字符串的细节已经放入到了此部分中,因为大多数程序员使用简单的ASCII字符串,而不需要了解这些主题。类似地,装饰器和元类通常也只是API构建者才感兴趣的专门话题,而不是应用程序员所感兴趣的话题。 然而,如果你确实使用这些工具,或者使用代码来做这些工作,“高级话题”部分的章节应该能够帮助你掌握其基础知识。此外,这些章的示例包含了学习案例,这些案例把核心语言概念绑定到了一起,并且它们比本书其他部分的示例更充实。由于这个新的部分是可选阅读材料,所以该部分最后只有问答题但没有练习题。

前言1第一部分 使用入门第1章 问答环节19人们为何使用Python19软件质量20开发效率21Python是“脚本语言”吗21好吧,Python的缺点是什么呢23如今谁在使用Python23使用Python可以做些什么24系统编程25用户图形接口25Internet脚本25组件集成26数据库编程26快速原型27数值计算和科学计算编程27游戏、图像、人工智能、XML、机器人等27Python如何获得支持28Python有哪些技术上的优点28面向对象28免费29可移植29功能强大30可混合31简单易用31简单易学32Python和其他语言比较起来怎么样32本章小结33本章习题33习题解答34Python是工程,不是艺术34第2章 Python如何运行程序36Python解释器简介36程序执行37程序员的视角37Python的视角39执行模块的变体41Python实现的替代者42执行优化工具43冻结二进制文件44其他执行选项45未来的可能性46本章小结46本章习题47习题解答47第3章 如何运行程序48交互提示模式下编写代码48交互地运行代码49为什么使用交互提示模式51使用交互提示模式52系统命令行和文件54第一段脚本55使用命令行运行文件56使用命令行和文件57UNIX可执行脚本(#!)58UNIX env查找技巧59点击文件图标60在Windows中点击图标60input的技巧61图标点击的其他限制63模块导入和重载63模块的显要特性:属性65import和reload的使用注意事项68使用exec运行模块文件69IDLE用户界面70IDLE基础71使用IDLE72高级IDLE工具74其他的IDE74其他启动选项76嵌入式调用76冻结二进制的可执行性77文本编辑器启动的选择77其他的启动选择77未来的可能77我应该选用哪种78调试Python代码78本章小结80本章习题80习题解答80第一部分 练习题81第二部分 类型和运算第4章 介绍Python对象类型87为什么使用内置类型88Python的核心数据类型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章 数字117Python的数字类型117数字常量118内置数学工具和扩展119Python表达式操作符120在实际应用中的数字125变量和基本的表达式125数字显示的格式126比较:一般的和连续的127str和repr显示格式128除法: 传统除法、Floor除法和真除法129整数精度133复数133十六进制、八进制和二进制记数134位操作136其他的内置数学工具137其他数字类型139小数数字139分数类型141集合145布尔型151数字扩展152本章小结153本章习题153习题解答153第6章 动态类型简介155缺少类型声明语句的情况155变量、对象和引用156类型属于对象,而不是变量157对象的垃圾收集158共享引用159共享引用和在原处修改161共享引用和相等163动态类型随处可见164本章小结165本章习题165习题解答165第7章 字符串167字符串常量169单双引号字符串是一样的170用转义序列代表特殊字节171raw字符串抑制转义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创建字典的其他方法230Python 3.0中的字典变化231本章小结237本章习题237习题解答237第9章 元组、文件及其他239元组239实际应用中的元组241为什么有了列表还要元组243文件243打开文件244使用文件245实际应用中的文件246其他文件工具252重访类型分类254为什么要在意操作符重载255对象灵活性255引用 VS 拷贝256比较、相等性和真值258Python 3.0的字典比较260Python中真和假的含义261Python的类型层次263Type对象263Python中的其他类型265内置类型陷阱265赋值生成引用,而不是拷贝265重复能够增加层次深度266留意循环数据结构266不可变类型不可以在原处改变267本章小结267本章习题268习题解答268第二部分练习题269第三部分 语句和语法第10章 Python语句简介275重访Python程序结构275Python的语句276两个if的故事278Python增加了什么279Python删除了什么279为什么使用缩进语法281几个特殊实例283简短实例:交互循环285一个简单的交互式循环285对用户输入数据做数学运算287用测试输入数据来处理错误288用try语句处理错误289嵌套代码三层290本章小结290本章习题291习题解答291第11章 赋值、表达式和打印292赋值语句292赋值语句的形式293序列赋值294Python 3.0中的扩展序列解包297多目标赋值语句301增强赋值语句302变量命名规则305Python的废弃协议306表达式语句308表达式语句和在原处的修改309打印操作310Python 3.0的print函数311Python 2.6 print语句313打印流重定向315版本独立的打印318为什么要注意print和stdout319本章小结320本章习题321习题解答321第12章 if测试和语法规则322if语句322通用格式322基本例子323多路分支323Python语法规则325代码块分隔符326语句的分隔符328一些特殊情况329真值测试330if/else三元表达式332为什么要在意布尔值334本章小结335本章习题335习题解答335第13章 while和for循环336while循环336一般格式336例子337break、continue、pass和循环else338一般循环格式338pass338continue340break340循环else341为什么要在意“模拟C 语言的while循环”342for循环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其他迭代环境371Python 3.0中的新的可迭代对象375range迭代器376map、zip和filter迭代器377多个迭代器 VS单个迭代器378字典视图迭代器379其他迭代器主题381本章小结381本章习题381习题解答382第15章 文档383Python文档资源383#注释384dir函数384文档字符串:__doc__385PyDoc:help函数388PyDoc:HTML报表390标准手册集393网络资源394已出版的书籍394常见编写代码的陷阱395本章小结397本章习题397习题解答397第三部分练习题398第四部分 函数第16章 函数基础403为何使用函数404编写函数405def语句406def语句是实时执行的407第一个例子:定义和调用408定义408调用408Python中的多态409第二个例子:寻找序列的交集410定义410调用411重访多态411本地变量412本章小结413本章习题413习题解答413第17章 作用域415Python作用域基础415作用域法则416变量名解析:LEGB原则418作用域实例419内置作用域420在Python 2.6中违反通用性422global语句422最小化全局变量423最小化文件间的修改424其他访问全局变量的方法426作用域和嵌套函数427嵌套作用域的细节427嵌套作用域举例427nonlocal语句433nonlocal基础433nonlocal应用435为什么使用nonlocal437本章小结440本章习题441习题解答442第18章 参数444传递参数444参数和共享引用445避免可变参数的修改447对参数输出进行模拟448特定的参数匹配模型449基础知识449匹配语法450细节452关键字参数和默认参数的实例452任意参数的实例455Python 3.0 Keyword-Only参数459min调用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函数属性480Python 3.0中的函数注解481匿名函数: lambda483lambda表达式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内置类型和类中的值生成515Python 3.0解析语法概括516解析集合和字典解析517针对集合和字典的扩展的解析语法517对迭代的各种方法进行计时518对模块计时519计时脚本519计时结果520计时模块替代方案523其他建议527函数陷阱528本地变量是静态检测的528默认和可变对象529没有return语句的函数531嵌套作用域的循环变量532本章小结532本章习题532习题解答533第四部分练习题533第五部分 模块第21章 模块:宏伟蓝图539为什么使用模块540Python程序架构540如何组织一个程序541导入和属性541标准库模块543import如何工作5431.搜索5442.编译(可选)5443.运行545模块搜索路径545配置搜索路径547搜索路径的变动548sys.path列表548模块文件选择549高级的模块选择概念550第三方工具:distutils550本章小结551本章习题551习题解答551第22章 模块代码编写基础553模块的创建553模块的使用554import语句554from语句555from *语句555导入只发生一次555import和from是赋值语句556文件间变量名的改变557import和from的对等性557from语句潜在的陷阱558模块命名空间560文件生成命名空间560属性名的点号运算562导入和作用域562命名空间的嵌套563重载模块564reload基础565reload实例566为什么要在意:模块重载567本章小结568本章习题568习题解答568第23章 模块包570包导入基础570包和搜索路径设置571__init__.py包文件572包导入实例573包对应的from语句和import语句574为什么要使用包导入575三个系统的传说576包相对导入578Python 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修改模块搜索路径599Import语句和from语句的as扩展599模块是对象:元程序600用名称字符串导入模块603过渡性模块重载604模块设计理念607模块陷阱607顶层代码的语句次序的重要性608from复制变量名,而不是连接609from *会让变量语义模糊610reload不会影响from导入610reload、from以及交互模式测试611递归形式的from导入无法工作612本章小结613本章习题613习题解答613第五部分练习题614第六部分 类和OOP第25章 OOP:宏伟蓝图619为何使用类620概览OOP621属性继承搜索621类和实例623类方法调用624编写类树624OOP是为了代码重用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继承、定制和扩展664OOP:大思路664步骤5:定制构造函数665OOP比我们认为的要简单666组合类的其他方式667在Python 3.0中捕获内置属性669步骤6:使用内省工具670特殊类属性670一种通用显示工具671实例与类属性的关系672工具类的命名考虑673类的最终形式674步骤7(最后一步):把对象存储到数据库中676Pickle和Shelve676在shelve数据库中存储对象677交互地探索shelve678更新shelve中的对象680未来方向681本章小结683本章习题684习题解答684第28章 类代码编写细节686class语句686一般形式686例子687方法689例子690调用超类构造函数691其他方法调用的可能性691继承692属性树的构造692继承方法的专有化693类接口技术694抽象超类695Python 2.6和Python 3.0的抽象超类696命名空间:完整的内容698简单变量名:如果赋值就不是全局变量698属性名称:对象命名空间698Python命名空间的“禅”:赋值将变量名分类699命名空间字典701命名空间链接704回顾文档字符串706类与模块的关系707本章小结708本章习题708习题解答708第29章 运算符重载710基础知识710构造函数和表达式:__init__和__sub__711常见的运算符重载方法711索引和分片:__getitem__和__setitem__713拦截分片713Python 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原处加法730Call表达式:__call__731函数接口和回调代码732比较:__lt__、__gt__和其他方法734Python 2.6的__cmp__方法(已经从Python 3.0中移除了)734布尔测试:__bool__和__len__735Python 2.6中的布尔736对象析构函数:__del__738本章小结739本章习题739习题解答739第30章 类的设计741Python和OOP741通过调用标记进行重载(或不要)742OOP和继承:“是一个”关系743OOP和组合:“有一个”关系744重访流处理器746为什么要在意:类和持续性748OOP和委托:“包装”对象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新式类的扩展789slots实例789类特性793__getattribute__和描述符795元类795静态方法和类方法796为什么使用特殊方法796Python 2.6和Python 3.0中的静态方法797静态方法替代方案799使用静态和类方法800使用静态方法统计实例801用类方法统计实例802装饰器和元类:第一部分805函数装饰器基础805装饰器例子806类装饰器和元类807更多详细信息808类陷阱809修改类属性的副作用809修改可变的类属性也可能产生副作用810多重继承:顺序很重要811类、方法以及嵌套作用域812Python中基于委托的类:__getattr__和内置函数814“过度包装”814本章小结815本章习题815习题解答815第六部分练习题816为什么要在意:大师眼中的OOP821第七部分 异常和工具第32章 异常基础825为什么使用异常826异常的角色826异常处理:简明扼要827默认异常处理器827捕获异常828引发异常829用户定义的异常830终止行为830为什么要在意:错误检查832本章小结833本章习题833习题解答834第33章 异常编码细节835try/except/else语句835try语句分句836try/else分句839例子:默认行为840例子:捕捉内置异常841try/finally语句841例子:利用try/finally编写终止行为842统一try/except/finally语句843统一try语句语法845通过嵌套合并finally和except845合并try的例子846raise语句847利用raise传递异常849Python 3.0异常链:raise from849assert语句850例子:收集约束条件(但不是错误)850with/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核心语言总结884Python工具集884大型项目的开发工具885本章小结888第七部分练习题889第八部分 高级话题注1第36章 Unicode和字节字符串893Python 3.0中的字符串修改894字符串基础知识895字符编码方法895Python的字符串类型897文本和二进制文件899Python 3.0中的字符串应用900常量和基本属性900转换901编码Unicode字符串903编码ASCII文本903编码非ASCII文本904编码和解码非ASCII文本904其他Unicode编码技术905转换编码907在Python 2.6中编码Unicode字符串908源文件字符集编码声明910使用Python 3.0 Bytes对象911方法调用912序列操作913创建bytes对象的其他方式913混合字符串类型914使用Python 3.0(和Python 2.6)bytearray对象915使用文本文件和二进制文件918文本文件基础919Python 3.0中的文本和二进制模式919类型和内容错误匹配921使用Unicode文件922在Python 3.0中读取和写入Unicode922在Python 3.0中处理BOM924Python 2.6中的Unicode文件927Python 3.0中其他字符串工具的变化927re模式匹配模块927Struct二进制数据模块928pickle对象序列化模块931XML解析工具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公有声明的泛化1022实现细节之二1024开放问题1025Python不是关于控制1029示例:验证函数参数1030目标1030针对位置参数的一个基本范围测试装饰器1031针对关键字和默认泛化1033实现细节1036开放问题1038装饰器参数 VS 函数注解1039其他应用程序:类型测试1041本章小结1042本章习题1042习题解答1043第39章 元类1046要么是元类,要么不是元类1046提高魔力层次1047“辅助”函数的缺点1049元类与类装饰器的关系:第一回合1051元类模型1053类是类型的实例1053元类是Type的子类1055Class语句协议1056声明元类1057编写元类1058基本元类1058定制构建和初始化1059其他元类编程技巧1060实例与继承的关系1063示例:向类添加方法1064手动扩展1064基于元类的扩展1065元类与类装饰器的关系:第二回合1067示例:对方法应用装饰器1070用装饰器手动跟踪1070用元类和装饰器跟踪1071把任何装饰器应用于方法1073元类与类装饰器的关系:第三回合1074“可选的”语言功能1076本章小结1078本章习题1078习题解答1078第九部分 附录注2附录A 安装和配置1083附录B 各部分练习题的解答 1093

标签:酋长杯欧冠

上一篇
下一篇