我正在学习python,但不确定是否理解以下语句:“该函数(包括其名称)可以捕获 我们对问题的看法或抽象 。”
这是我不理解编程含义的粗体部分。引用来自http://www.openbookproject.net/thinkcs/python/english3e/functions.html
像计算机科学家一样思考,第3版。
谢谢 !
抽象是所有计算机科学中的核心概念。没有抽象,我们仍将使用机器代码进行编程,或者更糟糕的是首先没有计算机。所以恕我直言,这是一个非常好的问题。
什么是 抽象
抽象 事物意味着 给 事物 命名 ,以便该名称抓住功能或整个程序的核心作用。
您参考的书中给出了一个示例,其中说
假设我们正在使用海龟,并且我们需要的常见操作是绘制正方形。“画一个正方形”是许多较小步骤的抽象或思想块。因此,让我们编写一个函数来捕获此“构建块”的模式:
暂时忘掉海龟,只想画一个正方形即可。如果我告诉您在纸上画一个正方形,您会立即知道该怎么做:
您可以执行此操作而无需其他问题,因为您完全知道 正方形 是什么,而无需我一步一步地告诉您。在这里,“ 正方形 ”一词是“绘制所有边长均相同的矩形”的
抽象 。
抽象深入
但是等等,你怎么知道什么是 矩形 ?好吧,这是以下内容的另一种抽象:
当然,它可以进行 在线 , 平行 , 垂直 , 连接, 这些都是众所周知概念的 抽象 。
现在,想象一下每次要绘制矩形或正方形时,都必须给出矩形的完整定义,或者说明直线,平行线,垂直线和连接线-这样做会花费太长时间。
抽象的真正力量
那 是抽象 的第一个 力量: 它们使交谈和完成事情变得更加容易。
抽象的第二种力量来自于 可组合性 的好特性:定义了抽象之后,就可以 组成
两个或多个抽象以形成一个新的更大的抽象:说您厌倦了绘制正方形,但是您确实想绘制一 所房子 。假设我们已经定义了 三角形 ,那么我们可以定义:
接下来,您要一个村庄:
哦,等等,我们想要一个城市-我们有一条新的概念 街 :
等等…
这一切如何适用于编程?
如果在计划程序的过程(称为 分析和设计
的过程)中,您找到了要解决的问题的良好抽象,那么程序就会变得更短,因此更容易编写,而且可能更重要的是,它更易于阅读。执行此操作的方法是尝试掌握定义问题的主要概念-
如在绘制 房屋 的(简化的)示例中,这是 正方形 和 三角形 ,在绘制 乡村的 过程中是 房屋 。
在编程中,我们将抽象定义为函数(以及一些其他构造,如类和模块,但现在让我们集中讨论函数)。函数本质上是 命名 一组单条语句,因此函数本质上是一种抽象-
有关详细信息,请参见本书中的示例。
这一切的美丽
在编程中,抽象会影响生产力。这就是为什么通常将常用功能收集到 库
中以供其他人重用的原因。这意味着您不必担心细节,只需要了解如何使用现成的抽象即可。显然,这应该会使您更轻松,因此您可以更快地工作,从而提高工作效率:
范例 :
想象有一个名为“ nicepic”的图形库,其中包含上述所有抽象的预定义函数:矩形,正方形,三角形,房屋,村庄。
假设您要基于上述抽象来创建一个程序,该程序描绘了一幅漂亮的房子,那么您所要做的就是:
import nicepic
draw_house()
因此,只需两行代码就可以进行更详细的说明。那不只是美好的吗?
希望这可以帮助。
问题内容: 我正在学习python,但不确定是否理解以下语句:“该函数(包括其名称)可以捕获 我们对问题的看法或抽象 。” 这是我不理解编程含义的粗体部分。引用来自http://www.openbookproject.net/thinkcs/python/english3e/functions.html 像计算机科学家一样思考,第3版。 谢谢 ! 问题答案: 抽象是所有计算机科学中的核心概念。没有
我想创建一个
问题内容: 下面是代码片段。 有人可以向我解释@符号在Java中的含义吗? 问题答案: 这是一个注释。 注释是元数据的一种形式。它们提供的程序数据不属于程序本身。注释对其注释的代码的操作没有直接影响。 注释确实会影响工具和库对待程序的方式,进而会影响正在运行的程序的语义。可以从源文件,类文件中读取注释,也可以在运行时从中读取注释。
问题内容: 异步在Ajax中意味着什么?以及Ajax如何知道何时在不进行服务器轮询的情况下提取数据? 问题答案: 异步意味着脚本将向服务器发送请求,并继续执行它而无需等待答复。收到答复后,立即触发浏览器事件,该事件进而允许脚本执行关联的操作。 Ajax知道何时从服务器提取数据,因为您告诉它何时进行处理。
问题内容: 使用或不使用变量访问变量之间有什么区别? 问题答案: 所述使它成为 用户定义 会话 变量。否则它将是 本地范围的 变量(在存储过程中),您必须先在本地使用它。如果需要,还可以设置 全局 系统 变量(使用或)。以及带有或或的会话 系统 变量。 有关详细信息,从文档:如果没有修饰符,改变会话变量(这就是为什么你在存储过程中的第一个当地人)。如果设置了多个系统变量,则该语句中的最新变量或修饰
问题内容: 我对gulp比较陌生,我想知道gulp任务到底是做什么的?我已经搜集到它通常在a 和after之后运行,但是它还必须更多。我一直无法在网上或gulp的文档中找到任何东西,我真的很想了解我在使用什么。 编辑我发现了这个,但是在解释它方面做得很差 问题答案: 从Node文档中: https://nodejs.org/api/stream.html#stream_visible_pipe_d