cop*_*per 46 python terminology
我正在学习python而且我不确定理解以下语句:"函数(包括它的名字)可以捕获我们对问题的心理分块或抽象."
这是粗体的部分,我不理解编程方面的含义.引用来自http://www.openbookproject.net/thinkcs/python/english3e/functions.html
如何像计算机科学家一样思考,3版.
谢谢 !
mir*_*ixx 142
抽象是所有计算机科学的核心概念.如果没有抽象,我们仍然会使用机器代码编程,或者更糟糕的是首先没有计算机.所以恕我直言,这是一个非常好的问题.
什么是抽象
抽象事物意味着为事物命名,因此名称捕获了函数或整个程序的核心.
在你所引用的书中给出了一个例子
假设我们正在与海龟合作,我们需要的一个常见操作是绘制正方形."画一个正方形"是一个较小步骤的抽象或心理块.那么让我们编写一个函数来捕获这个"构建块"的模式:
暂时忘掉海龟,想想画一个正方形.如果我告诉你画一个正方形(在纸上),你立即知道该怎么做:
你可以在没有进一步问题的情况下做到这一点,因为你知道一个正方形是什么,没有我一步一步告诉你.这里,方形一词是"绘制一个长度相同的所有边的矩形" 的抽象.
抽象深入
但是等等,你怎么知道矩形是什么?那么,这是以下的另一个抽象:
当然,它继续在线,平行,垂直,连接都是众所周知的概念的抽象.
现在,想象一下每次想要绘制一个矩形或正方形时,你必须给出一个矩形的完整定义,或解释直线,平行线,垂直线和连接线 - 这样做需要太长时间.
抽象的真正力量
这是抽象的第一个力量:它们使谈话和让事情变得更容易.
抽象的第二个力量来自可组合性的优点:一旦你定义了抽象,你可以组合两个或更多的抽象来形成一个新的,更大的抽象:说你厌倦了绘制正方形,但你真的想要画一个房子.假设我们已经定义了三角形,那么我们可以定义:
接下来,你想要一个村庄:
哦等等,我们想要一个城市 - 我们有一个新概念街:
等等...
这一切如何适用于编程?
如果在规划程序的过程中(称为分析和设计的过程),您会发现正在尝试解决的问题的良好抽象,您的程序变得更短,因此更容易编写 - 也许更重要的是 - 更容易阅读.这样做的方法是尝试并掌握定义问题的主要概念 - 如绘制房屋的(简化)示例,这是正方形和三角形,以绘制一个村庄,它是房屋.
在编程中,我们将抽象定义为函数(以及一些其他构造,如类和模块,但现在让我们关注函数).函数本质上是一组单个语句的名称,因此函数本质上是一个抽象 - 请参阅本书中的示例以获取详细信息.
这一切的美丽
在编程中,抽象可以决定生产力.这就是为什么常常将常用函数收集到库中,可以被其他人重用.这意味着您不必担心细节,您只需要了解如何使用现成的抽象.显然,应该让事情变得更容易,这样你就可以更快地工作,从而提高工作效率:
示例:
想象一下,有一个名为"nicepic"的图形库,它包含上面讨论的所有抽象的预定义函数:矩形,正方形,三角形,房屋,村庄.
假设你想根据上面的抽象创建一个程序,描绘一个漂亮的房子图片,你要写的就是:
import nicepic
draw_house()
Run Code Online (Sandbox Code Playgroud)
所以这只是两行代码来获得更精细的东西.这不是很棒吗?
希望这可以帮助.
理解抽象的一个好方法是通过抽象类.
假设我们正在编写一个模拟房屋的程序.房子将有几个不同的房间,我们将代表它们作为对象.我们为浴室,厨房,起居室,餐厅等定义了一个班级.
然而,所有这些都是房间,因此共享几个属性(门/窗的数量,平方英尺等)但是,房间永远不会存在于它自己...它总是会成为某种类型的房间.
然后创建一个名为Room的抽象类是有意义的,它将包含所有房间共享的属性,然后拥有Kitchen,Living Room等类,继承抽象类Room.
房间的概念是抽象的,只存在于我们的头脑中,因为任何实际存在的房间不仅仅是一个房间; 这是一间卧室,一间起居室或一间教室.
我们希望我们的代码能代表我们的"心理分块".它使一切都更整洁,更容易处理.
| 归档时间: |
|
| 查看次数: |
65757 次 |
| 最近记录: |