20191206《信息安全导论》第七周学习总结
一、《计算机科学概论》第八章—抽象数据类型与子程序
(一)抽象数据类型
1.抽象数据类型(ADT abstract data type):属性(数据和操作)明确与特定实现分离的容器。
抽象数据类型的描述包括给出抽象数据类型的名称、数据的集合、数据之间的关系和操作的集合等方面的描述。抽象数据类型的设计者根据这些描述给出操作的具体实现,抽象数据类型的使用者依据这些描述使用抽象数据类型。
2.应用层(用户层)是特定问题中的数据的视图。
3.逻辑层(抽象层)是数据值(域)和处理他们的操作的抽象视图。
4.实现层,计算机最底层
5.数据结构(data structure)一种抽象数据类型中的符合数据域的实现
6.容器(container)存放和操作其他对象的对象
(二)栈(stacks)模拟堆叠。放在只能对最上面的元素操作。所以先进后出。
(三)队列(queue)模拟队列。前面出。后面进。
关于栈
>>> stack = [3, 4, 5]
>>> stack.append(6)
>>> stack.append(7)
>>> stack[3, 4, 5, 6, 7]
>>> stack.pop()
>>> 7
>>> stack[3, 4, 5, 6]
>>> stack.pop()
>>> 6
>>> stack.pop()
>>> 5
>>> stack[3, 4]
关于队列
>>> from collections import deque
>>> queue = deque(["Eric", "John", "Michael"])
>>> queue.append("Terry")
>>> queue.popleft()
>>> queue
>>> (['Michael', 'Terry', 'Graham'])
(四)列表
1.三个属性特征:项目是同构的;项目是线性的;列表是变长的
2.链式结构:一个将数据项和找到下一项位置的信息保存到同一容器的实现方法。
(五)树
1.一种分层体系,在计算机领域,多是二叉树
2.二叉树(binary tree):具有一个根节点,与两个子节点,
3.二叉检索树:已经按一定顺序排列好了的二叉树
①这个顺序是:任何节点大于左子树所有节点,小于右子树所有节点
4.其他操作
(六)图
1.图(graph)由一组节点和一组把节点相互连接起来的边构成的数据结构
2.顶点(vertex)图中的节点
3.边(弧)edge:表示图中两个节点的连接的顶点对。
4.无向图(undirected graph)边没有方向的图
5.有向图(directed graph)边有方向
6.邻顶点(adjacent vertice)通过边连接起来的两个顶点
7.路径(path)连接图中两个顶点的一系列顶点
8.创建图
(1)深度优先搜索
(2)广度优先搜索
(3)单源最短路搜索
9.算法图
(七)子程序
1.参数传递
2.参数列表(parameter list)程序中两部分之间的通讯机制
3.形参(parameter)列在子程序名后的括号中的标识符
4.实参(argument)子程序调用中列在括号中的标识符
5.值参(value parameter)由调用单元传入实参的副本的形参
6.引用参数(reference parameter)由调用单元传入实参的地址的形参
二、《自学是一门手艺》
(一)第十一章第五节—函数文档
1.是函数的使用说明书,可用help()查看
2.编写函数文档:必须位于expression的开头,一般是多行注释,且保持相同的缩进。
3.书写规范:Docstring是写给人看的,写why远比what更重要
4.Sphnix版本的书写规范:
(二)第六节—保存到文件的函数
1.模块(module):一种可以被外部调用的.py文件。
2.Import....as ....
3.模块中不一定只有函数
4.用dir()查看模块中的变量名称和函数名称
(三)第七节—测试驱动开发
1.算法就是解决问题的步骤而已
2.两种错误:语法错误(syntax errors)意外(exceptions)
(四)第八节—可执行的python文件
1.从理论上讲,我们可以把任何一个程序封装到一个函数中,按照惯例,这个函数叫做main()函数