
Learning Python 5th Edition
小黑LLB
这个作者很懒,什么都没留下…
展开
-
Python学习笔记(三十六)Unicode 和 byte 字符串(Unicode and Byte Strings)
1. Python 3.X中字符串对象类型的名称(names)和角色(roles)是什么?答: Python 3.X有三种字符串类型:str(用于Unicode文本,包括ASCII),bytes(用于具有绝对字节值【 absolute byte values】的二进制数据)和 bytearray(可变字节的形式)。 str类型通常表示存储在文本文件中的内容,而其他两种类型通常表示存储在二进制文件...转载 2019-04-13 13:16:54 · 865 阅读 · 0 评论 -
Python学习笔记(三十五)- 异常设计(Designing with Exceptions)
1.(这个问题是第1章第一次测验的重复内容 —— 看,我告诉你这很容易!:-)为什么“spam”出现在书籍和网络上的这么多Python例子中?【困扰我很久的问题终于得到了解答】答:因为Python是以英国喜剧组织Monty Python的名字命名的(基于我在课堂上进行的调查,这在Python世界中是一个非常保密的秘密!)。 spam的引用来自Monty Python短剧,设置在一个自助餐厅,其菜...转载 2019-03-23 16:47:19 · 378 阅读 · 0 评论 -
Python学习笔记(三十四)- 异常对象(Exception Objects)
1. Python 3.X中用户定义的异常的两个新约束是什么?答:在3.X中,异常必须由类定义(即,引发并捕获类实例对象)。此外,必须从内置类BaseException派生异常类;大多数程序都从其Exception子类继承,以支持正常类型异常的catchall处理程序。2.如何将基于类(class-based)的异常引发与处理程序匹配?答:基于类的异常与超类关系匹配:在异常处理程序中...转载 2019-03-20 14:01:40 · 1347 阅读 · 0 评论 -
Python学习笔记(三十三)- 异常的编写细节(Exception Coding Details)
1.什么是try语句?答:try语句捕获并从异常中恢复 - 它指定要运行的代码块,以及在块执行期间可能引发的异常的一个或多个处理程序。2. try语句的两个常见变体(variations)是什么?答:try语句的两个常见变体是try / except / else(用于捕获异常)和try / finally(用于指定必须发生的清除操作,无论是否引发异常)。通过Python 2.4,这...转载 2019-03-19 15:38:18 · 532 阅读 · 0 评论 -
Python学习笔记(三十二)- 异常基础( Exception Basics)
1.说出异常处理(exception processing)有用的三件事。答:异常处理对于错误处理(error handling),终止操作(termination actions)和事件通知(event notification)很有用。它还可以简化特殊情况的处理,并可用于实现替代控制流(control flow)作为一种结构化的“go to”操作。通常,异常处理还会减少程序可能需要的错误检查...转载 2019-03-19 10:49:25 · 445 阅读 · 0 评论 -
Python学习笔记(三十一)高级的类话题(Advanced Class Topics)
1.说出两种扩展内建对象类型(built-in object type)的方法。答:您可以在包装类(wrapper class)中嵌入内置对象,或直接为内置类型创建子类(subclass)。后一种方法往往更简单,因为大多数原始行为都是自动继承的。2.什么是函数和类装饰器(decorators)?答:函数装饰器通常用于管理函数或方法,或者在每次调用函数或方法时添加一层逻辑。它们可用于记...转载 2019-03-18 16:20:24 · 499 阅读 · 0 评论 -
Python学习笔记(三十)- 类的设计(Designing with Classes)
1.什么是多重继承(multiple inheritance)?答:.当一个类继承自多个超类时,会发生多重继承;它可以将多个基于类的代码包混合在一起。类语句头中的从左到右的顺序决定了属性搜索的一般顺序。2.什么是委托(delegation?)?答:委托涉及将对象包装在代理类中,这会增加额外的行为并将其他操作传递给被包装的对象。代理保留包装对象的接口。3.什么是组合(compositio...转载 2019-03-10 22:22:42 · 455 阅读 · 0 评论 -
Python学习笔记(二十九)- 操作符重载(Operator Overloading)
1.您可以使用哪两个运算符重载方法来支持类中的迭代?答:类可以通过定义(或继承)__getitem__或__iter__来支持迭代。在所有迭代上下文(iteration contexts)中,Python首先尝试使用__iter__,它返回一个支持带有__next__方法的迭代协议的对象:如果继承搜索没有找到__iter__,Python会回退到__getitem__索引方法,该方法被重复调用,...转载 2019-03-09 16:34:25 · 1202 阅读 · 0 评论 -
Python学习笔记(二十八)- 编写类的细节(Class Coding Details)
1.什么是抽象超类(abstract superclass)?答:抽象超类是一个调用方法的类,但不继承或定义它 - 它希望该方法由子类来填充。这通常用作在编写更具体的子类之前无法预测行为时概括类的方法。 OOP框架还将此作为一种调度到基于客户定义的可自定义操作的方式。2.当一个简单的赋值语句出现在类语句的顶层时会发生什么?答:.当一个简单赋值语句(X = Y)出现在类语句的顶层时,它...转载 2019-03-08 20:12:14 · 357 阅读 · 0 评论 -
Python学习笔记(二十七)- 一个更加实际例子(A More Realistic Example)
1.当我们从shelve上取一个Manager对象并打印它时,这里显示格式的逻辑从何而来?答:在我们的类的最终版本中,Manager类最终在单独的classtools模块中从AttrDisplay类继承其__repr__的打印方法,并在类树(class tree)中继承了两个级别。Manager类本身是没有的,因此继承搜索会爬到其Person超类;因为那里也没有__repr__,搜索爬得更高并在...转载 2019-03-07 14:39:54 · 388 阅读 · 0 评论 -
Python学习笔记(二十六)- 类编写基础 Class Coding Basics
1.class如何与模块相关?答:类总是嵌套在模块中;它们是模块(moudule)对象的属性。类和模块都是命名空间,但类对应于语句(而不是整个文件),并且支持多个实例,继承和运算符重载的OOP概念(模块不支持)。从某种意义上说,模块就像一个单实例类,没有继承,它对应于整个代码文件。2.如何创建实例和类?答:通过运行class语句来创建类;通过调用类来创建实例,这个过程就好像它是一个函...转载 2019-03-06 22:42:14 · 426 阅读 · 0 评论 -
Python学习笔记(二十五)- 面向对象编程 总览(OOP-The Big Picture)
1. Python中OOP的要点是什么?答:OOP是关于代码重用的 - 您可以通过自定义已存在的内容而不是更改代码或从头开始来最小化代码冗余(redundancy)和程序。2.继承搜索(inheritance)在哪里查找属性?答:继承搜索首先在实例对象中查找属性,然后在实例创建的类中,然后在所有更高级的超类中,从对象树的底部到顶部,从左到右(通过默认)。搜索在找到属性的第一个位置时候...转载 2019-03-05 17:57:12 · 378 阅读 · 0 评论 -
Python学习笔记(二十四)- 高级的模块话题(Advanced Module Topics)
1.名称以单个下划线开头的模块顶层变量有什么重要意义?答:当使用 from * 语句形式时,名称以单个下划线开头的模块顶层的变量不会复制到导入作用域内。但是,它们仍然可以通过import 或普通的 from 语句形式访问。 __all__ 列表是类似的,但逻辑相反;它的内容是从 * 中复制出来的唯一名称。2.当模块的 __name__ 变量是字符串 "__main__" 时,它是什么意思?...转载 2019-03-04 20:22:30 · 437 阅读 · 0 评论 -
Python学习笔记(二十三)模块包(Module Packages)
1.在模块包(module package)目录中__init__.py文件的用途是什么?答:__init__.py文件用于声明和初始化常规模块包; Python首次导入进程中的目录时会自动运行其代码。 其分配的变量成为在内存中创建的模块对象的属性,以对应于该目录。 它在3.3及更高版本之前也不是可选的 - 除非包含此文件,否则无法通过包语法(package syntax)导入目录。2...转载 2019-03-03 16:20:35 · 384 阅读 · 0 评论 -
Python学习笔记(二十二)- 模块编程基础 (Module Coding Basics)
1.你如何制作一个模块(module)?答:要创建模块,你只需编写包含Python语句的文本文件; 每个源代码文件都自动成为一个模块,并且没有声明一个的语法。 导入操作将模块文件加载到内存中的模块对象中。 您也可以通过使用外部语言(如C或Java)编写代码来创建模块,但此类扩展模块超出了本书的范围。2. from语句与import语句有什么关系?答:from语句导入整个模块,如imp...转载 2019-03-02 12:12:08 · 407 阅读 · 0 评论 -
Python学习笔记(二十一)- 模块 —— 总揽(Modules -The Big Pictuture)
1.模块源代码文件如何成为模块对象?答:当导入该模块时,该模块的源代码文件自动成为模块对象。 从技术上讲,模块的源代码在导入期间运行,一次执行一个语句,并且在该过程中把所有名称都分配成为模块对象的属性。2.为什么可能需要设置 PYTHONPATH 环境变量?答:您只需要将 PYTHONPATH 设置为从您正在工作的目录以外的目录(即交互式工作时的当前目录或包含顶级文件的目录)中导入。...转载 2019-02-28 22:20:06 · 491 阅读 · 0 评论 -
Python学习笔记(二十)- 标杆插曲(The Benchmarking Interlude)
1.对于Python迭代工具的相对速度,你能从本章中得出什么结论?答:一般来说,列表推导式(list comprehensions)通常是最快的; 只有当所有迭代工具都必须调用函数时,map 函数打败了列表推导式; for 循环往往比列表推导式慢; 在不变的因素下,生成器函数和表达式比推导式慢。 在PyPy下,其中一些发现有所不同; 例如,map 通常会转换为不同的相对性能,并且列表推导似乎总是...转载 2019-02-27 16:16:49 · 513 阅读 · 0 评论 -
Python学习笔记(十九)- 推导式和生成式(Comprehensions and Generations)
1.将方括号【[]】中的列表推导式与小括号【()】括起来的有什么区别?答:在方括号中的列表推导式在内存中会一次生成结果列表。当它们括在小括号中时,它们实际上是生成器表达式 - 它们具有相似的含义,但不会同时生成结果列表。相反,生成器表达式返回一个生成器对象,当在迭代上下文(iteration context)中使用时,它会在结果中一次生成一项。 2.生成器(generators)和迭代器...转载 2019-02-26 09:32:06 · 487 阅读 · 0 评论 -
Python学习笔记(十八)- 高级函数话题(Advanced Function Topics)
1. lambda 表达式和 def 语句是如何联系的?答:lambda 和 def 都创建稍后要调用的函数对象。 但是,因为lambda是一个表达式,它返回一个函数对象而不是将其赋值给一个名称,它可以用于在一个 def 语法不起作用的地方嵌套一个函数定义。 但是,lambda只允许一个隐式返回值表达式; 因为它不支持一个语句块,所以它不适合大型函数。 2.使用lambda有什么意义?...转载 2019-02-24 15:16:15 · 697 阅读 · 0 评论 -
Python学习笔记(十七)- 参数( Arguments)
在大多数下面的问题中,结果可能在 2.X 中略有不同 - 在打印多个值时用括号和逗号括起来。 要在 2.X 中完全匹配 3.X 的答案,请在开始之前从 __future__ 导入 print_function (from __future__ import print_function)。1.以下代码的输出是什么,为什么?>>> def func(a, b=4, c...转载 2019-02-23 14:43:25 · 2759 阅读 · 0 评论 -
Pygame学习笔记(十六)- 作用域(Scopes)
1.下面代码的输出结果是什么,为什么?>>> X = 'Spam'>>> def func(): print(X)>>> func()答:输出在这里的结果是 'Spam',因为该函数引用了封闭模块(enclosing module)中的全局变量(因为它未在函数中赋值,因此被视为全局变量) 2.下面代码的输出结果是什...转载 2019-02-22 14:58:49 · 607 阅读 · 0 评论 -
Python学习笔记(十五)- 函数基础(Function Basics)
1.编写函数有什么意义?答:函数是避免 Python 中代码冗余的最基本方法 - 将代码转换为函数意味着我们将来只有一个操作代码的副本可以更新(可以不用在程序各个部分修改相同的内容)。 函数也是 Python 中代码重用的基本单元 - 函数中的代码使其成为可重用的工具,可在各种程序中调用。 最后,函数允许我们将复杂系统划分为可管理的零件,每个零件都可以单独开发。 2. Python什么时...转载 2019-02-21 19:06:10 · 425 阅读 · 0 评论 -
Python学习笔记(十四)- 文档间奏(The Documentation Interlude)
1.什么时候应该使用文档字符串(documentation strings)而不是井号注释(hash-mark comments)?答:文档字符串(docstrings)被认为是大型函数文档的最佳选择,在你的代码中描述了模块,函数,类和方法的使用。井号注释如今最好限于较小规模的文档,那些有关于代码中战略要点的神秘表达式(expression)或语句(statement)。这是部分原因是因为文档字...转载 2019-02-19 22:01:20 · 461 阅读 · 0 评论 -
Python学习笔记(十三)- 迭代和推导式(Iterations and Comprehension)
1.for 循环和可迭代对象是如何关联的?答:for 循环使用迭代协议(iteration protocol)来遍历它正在迭代的可迭代对象中的项。它首先通过将对象传递到 iter() 来从可迭代对象(iterable)获取迭代器(iterator),并且在 Python 3.X 中每次迭代中调用此迭代器对象的 __next__ 方法,并捕获 StopIteration 异常以确定何时停止循环。...转载 2019-02-18 15:59:01 · 564 阅读 · 0 评论 -
Python学习笔记(十二)- while 和 for 循环(while and for Loops)
1.while 和 for 主要的功能区别是什么?答:while 循环是通用的循环语句,而for被设计用来在序列(sequence)或者其它可迭代对象(iterable)迭代项。尽管 while 可以用计数器循环模仿 for,但是它会产生更多代码而且可能运行的更慢。 2.break 和 continue 的区别是什么?答:break 语句立即退出循环(结束 while 或者 for 循...转载 2019-02-17 10:24:33 · 1560 阅读 · 0 评论 -
Python学习笔记(十一)- if 测试和语法规则(if Tests and Syntax Rules)
1.如何用Python编写多路分支?答:一个带有多个elif子句的if语句通常是最直接的方法,来编写多路分支,虽然不一定是最简洁或最灵活的。字典索引通常取得相同的结果,尤其是当字典包含用 def 语句或 lambda 表达式编写的可调用函数时。 2.如何在Python中将 if/else 语句编写为表达式?答:在Python 2.5 和 之后的版本,表达式 Y if X else Z ...转载 2019-02-16 12:22:39 · 357 阅读 · 0 评论 -
Python学习笔记(十)- 赋值,表达式和打印(Assignments, Expressions, and Prints)
1.列出三种可以将三个变量赋给同一个值的方法答:您可以使用多目标分配【multipule-target assignments】(A = B = C = 0),序列赋值【sequence assignment】(A, B, C = 0, 0, 0),或者三行多个赋值语句(A = 0, B = 0 和 C =0)。使用后一种方法,如第10章所介绍的,您还可以通过用分号将三个单独的语句串在同一行上(...转载 2019-02-15 20:16:20 · 660 阅读 · 0 评论 -
Python学习笔记(九)- 介绍Python语句(Introducing Python Statements)
1.哪三样东西在类C语言中被需要但是在Python被忽略?答:类C语言需要在某些语句中在测试周围加上括号,在每个语句的末尾使用分号,并在嵌套的代码块周围用大括号表示。如下面的类C语言:if (x > y) { x = 1; y = 2;}Python版的:if x > y: x = 1 y = 2 2.在Python中,正常情况语句如何被终止?答:行的...转载 2019-02-13 21:23:15 · 631 阅读 · 0 评论 -
Python学习笔记(八)- 元组、文件和其他任何东西(Tuples, Files, and Everything Else)
1.你如何判断元组有多大?为什么这个工具位于它所在的位置?答:内建函数 len 返回Python中任何容器对象的长度(包含项的数量),包括元组。它是一个内置函数,而不是类型方法,因为它适用于许多不同类型的对象。通常情况下,内建函数和表达式可以横跨多个对象类型;方法特定于单个对象类型,虽然其中一些可以在多个类型上使用(例如,index方法在列表和元组上起作用)。2.写一个表达式,改变元组的第...转载 2019-02-13 10:38:04 · 420 阅读 · 0 评论 -
Python学习笔记(七)- 列表和字典(Lists and Dictionaries)
1.说出两种创建包含了5个整数0的列表的方法。答:一个字面量(literal)表达式如 [0, 0, 0, 0, 0] 和一个重复(repetition)表达式如 [0] * 5 每个可以创建5个0的列表。事实上,你可以用一个空列表 [] ,然后建立起循环,每次迭代附加(append)一个0,使用语句 L.append(0)。一个列表推导式([0 for i in range(5)])在这也能起...转载 2019-02-12 09:59:17 · 644 阅读 · 0 评论 -
Python学习笔记(六)- 字符串基本原理(String Fundamentals)
1.字符串find方法可以被用来搜索列表么?答:不可以,方法(methods)总是特定类型的;那就是说,它们仅在单种数据类型上起作用。表达式像是 X+Y 和内建函数像是 len(X) 则是通用的,可以在多种数据类型上起作用。在这种情况下,例如,in 成员表达式和字符串find方法有相似的效果,但是它可以被用来搜索字符串和列表。在Python 3.X 中,有一些人尝试按类别对方法(methods)...转载 2019-02-11 11:15:17 · 556 阅读 · 0 评论 -
Python学习笔记(五)- 动态类型间奏(The Dynamic Typing Interlude)
1.考虑下面三个语句。它们是否更改了A的值?A = 'spam'B = AB = 'shrubbery'答:没有改变,A仍然打印 'spam'。当B被赋值字符串 'shrubbery',所有发生的事是变量B被重新设置为指向新的字符串对象。A和B初始指向相同的字符串对象 'spam',但是在Python中,变量名字从来不会联系到一起(变量名之间没关系,只是引用相同对象)。因而,把B设置为不同...转载 2019-02-09 11:23:36 · 374 阅读 · 0 评论 -
Python学习笔记(四)- 数字类型(Numeric Types)
1.在Python中,表达式 2 *(3+4)的值是什么?答:值为14, 2* 7的结果,因为小括号强制在乘法之前做加法 2.在Python中,表达式 2 * 3 + 4 的值是什么?答:值为10,6+4的结果。Python操作符优先规则在没有小括号时生效,而且乘法优先于加法(在加法之前生效)。 3.在Python中,表达式 2 + 3 * 4 的值是什么?答:值为14, 2...转载 2019-02-09 09:04:03 · 1762 阅读 · 0 评论 -
Python学习笔记(三)- 介绍Python对象类型(Introducing Python Object Types)
1.说出Python四种核心数据类型答:数字(Numbers),字符串(strings),字典(dictionaries),元组(tuples),文件(files)和集合(sets)通常被认为是核心(数据)类型。类型(Types),None和布朗值(Booleans)有时也是这样被分类的。有多种数字类型(整型(integer),浮点数(floating point),复数(complex),分数...转载 2019-02-09 09:01:20 · 441 阅读 · 0 评论 -
Python学习笔记(二)- 你如何运行程序(How You Run Programs)
1.你如何启动交互式解释器会话(interactive intepreter session)?答:你可以启动一个交互式会话在Windows7,更早些的时候,通过点击你的开始按钮,选择“所有程序”选项,点击Python一栏,然后选择“Python(命令行)”菜单选项。当然,你也可以通过在你的系统控制窗口(在Windows中是命令提示符窗口)中键入Python(作为一条系统指令行),在Window...转载 2019-01-30 23:06:18 · 610 阅读 · 0 评论 -
Python学习笔记(一)- Python如何运行脚本文件(How Python Runs Programs)
1.Python编译器是什么?答:Python是一个程序用来运行你写的Python程序2.Python源代码是什么?答:源代码就是你给你的程序写的语句——它由文本文件中通常以.py扩展名结尾的文本组成3.字节码是什么?答:字节码就是在Python编译完你的程序后的底层形式。Python自动地用一个.pyc扩展名来储存字节码4.PVM是什么?答:PVM是Python虚拟机...转载 2019-01-21 18:21:19 · 384 阅读 · 0 评论