Skip to content

Commit dd2a340

Browse files
committed
typo
1 parent c9e119c commit dd2a340

File tree

1 file changed

+8
-8
lines changed

1 file changed

+8
-8
lines changed

3.4.md

+8-8
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
处理程序中的错误没有单一的正确方式。为提供一些持久性服务而设计的程序,例如 Web 服务器 应该对错误健壮,将它们记录到日志中为之后考虑,而且在尽可能长的时间内继续接受新的请求。另一方面,Python 解释器通过立即终止以及打印错误信息来处理错误,便于程序员在错误发生时处理它。在任何情况下,程序员必须决定程序如何对异常条件做出反应。
1212

13-
异常是这一节的话题,它为程序的错误处理提供了通用的机制。产生异常是终止程序正常执行流的技巧,发射异常情况产生了的信号,并直接返回到用于响应异常情况的程序的封闭部分。Python 解释器每次在检测到语句或表达式错误时抛出异常。用户也可以使用`raise``assert`语句来抛出异常。
13+
异常是这一节的话题,它为程序的错误处理提供了通用的机制。产生异常是一种技巧,终止程序正常执行流,发射异常情况产生的信号,并直接返回到用于响应异常情况的程序的封闭部分。Python 解释器每次在检测到语句或表达式错误时抛出异常。用户也可以使用`raise``assert`语句来抛出异常。
1414

1515
**抛出异常。**异常是一个对象实例,它的类直接或间接继承自`BaseException`类。第一章引入的`assert`语句产生`AssertionError`类的异常。通常,异常实例可以使用`raise`语句来抛出。`raise`语句的通用形式在 [Python 文档](http://docs.python.org/py3k/reference/simple_stmts.html#raise)中描述。`raise`的最常见的作用是构造异常实例并抛出它。
1616

@@ -23,7 +23,7 @@ Exception: an error occurred
2323

2424
当异常产生时,当前代码块的语句不会继续执行。除非异常被解决了(下面会描述),解释器会直接返回到“读取-求值-打印”交互式循环中,或者在 Python 以文件参数启动的情况下会完全终止。此外,解释器会打印栈回溯,它是结构化的文本块,描述了执行分支中的一系列嵌套的活动函数,它们是异常产生的位置。在上面的例子中,文件名称`<stdin>`表示异常由用户在交互式会话中产生,而不是文件中的代码。
2525

26-
**处理异常。**异常可以使用封闭的`try`语句来处理。`try`语句有多个子句组成,第一个子句以`try`开始,剩下的以`except`开始。
26+
**处理异常。**异常可以使用封闭的`try`语句来处理。`try`语句由多个子句组成,第一个子句以`try`开始,剩下的以`except`开始。
2727

2828
```py
2929
try:
@@ -48,7 +48,7 @@ handling a <class 'ZeroDivisionError'>
4848
0
4949
```
5050

51-
`try`语句能够处理产生在函数体重的异常,函数在`<try suite>`中调用。当异常产生时,控制流会直接跳到最近的`try`语句的能够处理该异常类型的`<except suite>`的主体中。
51+
`try`语句能够处理产生在函数体中的异常,函数在`<try suite>`中调用。当异常产生时,控制流会直接跳到最近的`try`语句的能够处理该异常类型的`<except suite>`的主体中。
5252

5353
```py
5454
>>> def invert(x):
@@ -73,7 +73,7 @@ Never printed if x is 0
7373

7474
异常对象本身就带有属性,例如在`assert`语句中的错误信息,以及有关异常产生处的信息。用户定义的异常类可以携带额外的属性。
7575

76-
在第一章中,我们实现了牛顿法来寻找任何函数的零点。下面的例子定义类一个异常类,无论何时`ValueError`出现,它都返回迭代改进过程中所发现的最佳猜测值。数学错误(`ValueError`的一种)在`sqrt`在负数上调用时产生。这个异常由抛出`IterImproveError`处理,它将牛顿迭代法的最新猜测值储存为参数。
76+
在第一章中,我们实现了牛顿法来寻找任何函数的零点。下面的例子定义了一个异常类,无论何时`ValueError`出现,它都返回迭代改进过程中所发现的最佳猜测值。数学错误(`ValueError`的一种)在`sqrt`在负数上调用时产生。这个异常由抛出`IterImproveError`处理,它将牛顿迭代法的最新猜测值储存为参数。
7777

7878
首先,我们定义了新的类,继承自`Exception`
7979

@@ -83,7 +83,7 @@ Never printed if x is 0
8383
self.last_guess = last_guess
8484
```
8585

86-
下面,我们定义了`IterImprove`的一个版本,我们的通用迭代改进算法。这个版本通过抛出`IterImproveError`异常,储存最新的猜测值来处理任何`ValueError`。像之前一样,`iter_improve`接受两个函数作为参数,每个函数都接受单一的数值参数。`update`函数返回新的猜测值,而`done`函数返回布尔值,表明改进是否收敛到了正确的值。
86+
下面,我们定义了`IterImprove`,我们的通用迭代改进算法的一个版本。这个版本通过抛出`IterImproveError`异常,储存最新的猜测值来处理任何`ValueError`。像之前一样,`iter_improve`接受两个函数作为参数,每个函数都接受单一的数值参数。`update`函数返回新的猜测值,而`done`函数返回布尔值,表明改进是否收敛到了正确的值。
8787

8888
```py
8989
>>> def iter_improve(update, done, guess=1, max_updates=1000):
@@ -97,7 +97,7 @@ Never printed if x is 0
9797
raise IterImproveError(guess)
9898
```
9999

100-
最后,我们定义了`find_root`,它返回`iter_improve`的结果。`iter_improve`应用于由`newton_update`返回的牛顿更函数`newton_update`定义在第一章,在这个例子中无需任何改变。`find_root`的这个版本用过返回它的最后一个猜测之来处理`IterImproveError`
100+
最后,我们定义了`find_root`,它返回`iter_improve`的结果。`iter_improve`应用于由`newton_update`返回的牛顿更新函数`newton_update`定义在第一章,在这个例子中无需任何改变。`find_root`的这个版本通过返回它的最后一个猜测之来处理`IterImproveError`
101101

102102
```py
103103
>>> def find_root(f, guess=1):
@@ -109,14 +109,14 @@ Never printed if x is 0
109109
return e.last_guess
110110
```
111111

112-
考虑一下使用`find_root`来寻找`2 * x ** 2 + sqrt(x)`的零点。这个函数的一个零点是`0`,但是在任何负数上求解它会产生`ValueError`。我们第一章的牛顿法实现会产生异常,并且不能返回任何零点的猜测值。我们的修订版实现在错误之前返回了最新的猜测值。
112+
考虑使用`find_root`来寻找`2 * x ** 2 + sqrt(x)`的零点。这个函数的一个零点是`0`,但是在任何负数上求解它会产生`ValueError`。我们第一章的牛顿法实现会产生异常,并且不能返回任何零点的猜测值。我们的修订版实现在错误之前返回了最新的猜测值。
113113

114114
```py
115115
>>> from math import sqrt
116116
>>> find_root(lambda x: 2*x*x + sqrt(x))
117117
-0.030211203830201594
118118
```
119119

120-
虽然这个近似值仍旧距离正确的答案`0`很远,一些应用更倾向于这个近似而不是`ValueError`
120+
虽然这个近似值仍旧距离正确的答案`0`很远,一些应用更倾向于这个近似值而不是`ValueError`
121121

122122
异常是另一个技巧,帮助我们将程序细节划分为模块化的部分。在这个例子中,Python 的异常机制允许我们分离迭代改进的逻辑,它在`try`子句组中没有发生改变,以及错误处理的逻辑,它出现在`except`子句中。我们也会发现,异常在使用 Python 实现解释器时是个非常实用的特性。

0 commit comments

Comments
 (0)