天天看点

《像计算机科学家一样思考Python》——4.4 封装

本节书摘来自异步社区《像计算机科学家一样思考python》一书中的第4章,第4.4节,作者[美]allen b. downey,赵普明 译,更多章节内容可以访问云栖社区“异步社区”公众号查看。

第一个练习要求你把画正方形的代码放到一个函数定义中,并将乌龟bob作为实参传入,调用该函数。下面是一个解答:

最内侧的语句,fd和lt都缩进了两层,表示它们是在for语句的语句体内部,而for语句在函数定义的函数体内部。最后一行,square(bob),又重新从左侧开始而没有缩进,所以这里for语句和square函数的定义都已经结束了。

在函数体中,t引用的乌龟和bob引用的相同,所以lt(t)和直接调用lt(bob)是一样的效果。那么为什么不直接把形参写为bob呢?原因是t可以是任何乌龟,而不仅仅是bob,所以你可以再新建一只乌龟,并将它作为参数传入到square函数:

把一段代码用函数包裹起来,称为封装(encapsulation)。封装的一个好处是,它给这段代码一个有意义的名称,增加了可读性。另一个好处是,当你重复使用这段代码时,调用一次函数比复制粘贴代码要简易得多!