【4.0】模块
前言因为Python是解释型的,这就意味着如果你运行后退出再次运行,之前定义的变量及其相关数据都会丢失。因此如果你希望编写一些长的程序,则需要使用文本编辑器来进行,并将编辑好的python代码作为输入运行。这种形式的文件被称为:脚本。
随着编写的内容越来越多,当你希望将其编写的内容拆分成几个不同类型的文件以方便维护;或者你希望经常使用自己的某个函数(方法),而不必要每次都编写一次代码内容。为了支持这些需求,python可以将定义放在一个文件里,并在脚本中交互的时候它们。这种文件被称为:模块。
在我们编写的脚本中,可以导入不同的模块,以实现各种我们所需要的功能。
模块本质仍是一个包含python语句的文件,其后缀为:.py。在模块内部,模块名称可以通过全局变量__name__的值获得。
例如,你可以在任意文件路径下,创建一个新的.py文件,其代码内容如下所示:
12def PutText(): print("test");
该.py文件中仅仅定义了一个名称为PutText的函数(方法),你可以通过如下代码在另一个.py文件中,调用你定义的这个方法,代码示例:
...
【3.0】数据结构
前言这部分会再前面涉及的数据结构的基础上拓展并且说明更多的数据结构,这些数据结构在编程方面就如图画家的画笔,是编程工具或者说小帮手。
✒️:现在需要说明一个事情,且后面不会再强调说明:如果方法签名中某些参数两边的方括号([])表示这个参数是可选的,而不是要你输入方括号。你会在 Python 参考库中经常看到这种表示方法。
列表的更多特性前面已经说明了列表的基本概述,其还有很多的方法,如下所示:
方法
说明
list.append(x)
在列表的末尾添加一个元素
list.extend(iterable)
使用可迭代对象中的所有元素来扩展列表
list.insert(i, x)
在给定的位置插入一个元素。第一个参数是要插入的元素的索引,第二个参数是要插入的元素
list.remove(x)
移除列表中第一个值为 x 的元素。如果没有这样的元素,则抛出 ValueError异常
list.pop([i])
删除列表中给定位置的元素并返回它。如果没有给定位置,a.pop() 将会删除并返回列表中的最后一个元素
list.clear()
移除列表中的所有元素
...
【2.0】流程控制工具
前言除了上一部分使用的的 while语句,Python 中也会使用其他语言中常见的流程控制语句,只是稍有变化。
流程控制语句while语句语句格式如下所示:
123# 这是基本语法格式while 条件: 执行过程
注:执行过程语句的缩进是必要的且要缩进一致
if 语句这是编程中最基本也是最常用的语句之一了,代码原型:
12345678910111213141516171819# 最基本的用法if 条件: 执行语句else 条件: 执行语句# 当然你也可以只使用 if 条件if 条件: 执行语句# 当然你也可以多条件使用if 条件: 执行语句elif 条件: 执行语句elif 条件: 执行语句else 条件: 执行语句
可以有零个或多个 elif1部分,以及一个可选的 else部分。
注:python 并不支持 else if 全称写法
for语句Python 的for语句和其他编程语言不太相同,Python 并不是设置步长,循环条件来完成for循环。反而是对任意序列进行迭代(例如列表或字符串),条目的迭代顺序与它们在序列中出 ...
【1.0】Python入门
前言Python 很容易使用,但它是一种真正的编程语言,提供了很多数据结构,也支持大型程序,远超 shell 脚本或批处理文件的功能。Python 还提供比 C 语言更多的错误检查,而且作为一种 “超高级语言”,它有高级的内置数据类型,比如灵活的数组和字典。
Python 是一种解释型语言,在程序开发阶段可以为你节省大量时间,因为不需要编译和链接。
注:本内容使用的Python版本为 3.8
Python解释器调用解释器如果你在安装Python的时候选择了自动添加Python环境变量,则可以在CMD或者直接在桌面空白处右键选择在终端处打开(仅Win11支持),在命令终端中直接输入python即可调用Python解释器。
如果你并没有配置环境变量,需要先配置对应的环境变量。
关于环境变量的说明,可以查看环境变量那些事
在调用解释器后,每次输入命令的样式变为如下:
1>>> 这里是你的命令
在Windows系统下,使用Ctrl + z 来退出调用解释器或者输入命令quit()来退出调用。
解释器运行的时候有点像 Unix 命令行:在一个标准输入 tty1 ...
【5.0】输入输出(IO)管理
前言NULL,懒得写了
I/O管理概述I/O设备的概念和分类“I/O”就是“输入/输出”(Input/Output)。I/O设备就是可以将数据输入到计算机,或者可以接收计算机输出数据的外部设备,属于计算机中的硬件部件。
UNIX 系统将外部设备抽象为一种特殊的文件,用户可以使用与文件操作相同的方式对外部设备进行操作。
按使用特性分类
按传输速率分类
按信息交换单位分类
I/O控制器I/O设备的机械部件主要用来执行具体 I/O操作。如我们看得见摸得着的鼠标/键盘的按钮;显示器的LED屏;移动硬盘的磁臂、磁盘盘面。I/O设备的电子部件通常是一块插入主板扩充槽的印刷电路板。
I/O设备的电子部件通常是一块插入主板扩充槽的印刷电路板。
CPU无法直接控制I/O设备的机械部件,因此I/O设备还要有一个电子部件作为CPU和I/O设备机械部件之间的“中介”,用于实现CPU对设备的控制。
I/O控制器的组成
注意:
一个I/O控制器可能会对应多个设备;
数据寄存器、控制寄存器、状态寄存器可能有多个(如:每个控制/状态寄存器对应 ...
【4.0】文件管理
前言这部分说明了文件整个系统的原理和底层大概逻辑。
文件系统基础初识文件管理文件——就是一组有意义的信息/数据集合。
文件的属性文件名:由创建文件的用户决定文件名,主要是为了方便用户找到文件,同一目录下不允许有重名文件。
标识符:一个系统内的各文件标识符唯一,对用户来说毫无可读性,因此标识符只是操作系统用于区分各个文件的一种内部名称。
类型:指明文件的类型
位置:文件存放的路径(让用户使用)、在外存中的地址(操作系统使用,对用户不可见)
大小:指明文件大小
创建时间、上次修改时间,文件所有者信息
保护信息:对文件进行保护的访问控制信息
文件数据的组织
无结构文件(如文本文件)——由一些二进制或字符流组成,又称“流式文件。
有结构文件(如数据库表)——由一组相似的记录组成,又称“记录式文件。
用户可以自己创建一层一层的目录,各层目录中存放相应的文件。系统中的各个文件就通过一层一层的目录合理有序的组织起来了。目录其实也是一种特殊的有结构文件(由记录组成)。
文件的外存存放类似于内存分为一个个“内存块”,外存会分为一个个“块/磁盘块/物理块”。每个磁盘块的大小是相等的,每块一般包含2的 ...
【3.0】内存管理
前言内存管理部分内容,解释说明了内存如何对进程进行管理调度,来使得软件可以正常的运行在操作系统之中。
内存管理的概念内存的基础知识内存可存放数据。程序执行前需要先放到内存中才能被CPU处理——缓和CPU与硬盘之间的速度矛盾。
从写程序到程序运行
编译:由编译程序将用户源代码编译成若干个目标模块(编译就是把高级语言翻译为机器语言)
链接:由链接程序将编译后形成的一组目标模块,以及所需库函数链接在一起,形成一个完整的装入模块
装入(装载):由装入程序将装入模块装入内存运行
装入的三种方式
绝对装入:在编译时,如果知道程序将放到内存中的哪个位置,编译程序将产生绝对地址的目标代码。装入程序按照装入模块中的地址,将程序和数据装入内存。
绝对装入只适用于单道程序环境
可重定位装入(静态重定位):编译、链接后的装入模块的地址都是从0开始的,指令中使用的地址、数据存放的地址都是相对于起始地址而言的逻辑地址。可根据内存的当前情况,将装入模块装入到内存的适当位置。装入时对地址进行“重定位”,将逻辑地址变换为物理地址(地址变换是在装入时一次完成的)。
静态重定位的特点是在一个作业装入内存时,必 ...
【2.0】进程和线程
前言NULL,基础部分,很长很多很麻烦
进程与线程进程的概念程序:是静态的,程序:是静态的,就是个存放在磁盘里的可执行文件,就是一系列的指令集合。进程(Process):是动态的,是程序的一次执行过程。
进程的组成系统使用 PCB(进程控制块)来描述进程的基本情况和运行状态,进而控制和管理进程。
相应的,程序段,数据段和 PCB 三个部分构成了进程实体。进程是动态的,进程实体是静态的。
进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。
PCB 是进程存在的唯一标志
进程的特征
动态性:进程是动态产生,变化和消亡的
并发性:内存中有多个进程实体,各进程可以并发执行
独立性:独立运行,获得资源,进行调度的基本单位
异步性
结构性
进程的状态与转换
进程正在被创建时,其状态为“ 创建态 ”,这个阶段会分配资源,初始化 PCB
当进程创建完成后,便进入“就绪态”,处于就绪态的进程已经具备运行条件,但由于没有空闲CPU,就暂时不能运行
如果一个进程此时在CPU上运行,那么这个进程处于“运行态”。
在进程运行的过程中,可能会请求等待某个事件的发生。在这个事件发生之前,进 ...
【1.0】操作系统概述
前言操作系统的基本概述,内容来源自《王道操作系统》并略有补充,此为本人笔记,仅供参考
操作系统的基本概念操作系统概念操作系统(英语:Operating System,缩写:OS)是一组主管并控制计算机操作、运用和运行硬件、软件资源和提供公共服务来组织用户交互的相互关联的系统软件程序。根据运行的环境,操作系统可以分为桌面操作系统,手机操作系统,服务器操作系统,嵌入式操作系统等。
内容来源:百度百科
操作系统特点
并发:指两个或者多个程序在同一个时间间隔内发生。
注意:区分并行,并行指同一时刻发生。这就意味着,对于单核的CPU同一时刻只能执行一个程序,各个程序只能并发的执行,而对于多核CPU可以同时执行多个程序,多个程序可以并行的执行。
共享,指系统中的资源可以供内存中多个并发执行的进程共同使用。共享可以分为两种类型:互斥共享方式和同时访问方式。
如果失去并发性,也就没必要实现共享性,反之同理,两者互为存在条件。
虚拟,指把一个物理上的实体变为若干个逻辑上的对应物。虚拟技术也可以分为两种类型:空分复用技术和时分复用技术。
异步,由于并发运行的程序会争抢着使用系统资源,而系 ...
随记开发日志
前言尝试开发第一个项目,详情可以查看关于我的短期想法,此文档是我的开发进度日志,希望我可以坚持到顺利开发更新。
一些想法想法第一版采用侧边栏任务栏,将功能模块尽量缩小,让更多的内容专注于写作的右侧主模块。
右侧主模块默认主页是类似于气泡框的呈现形式,类似于小组件后续方便组件开发和排版。
配色采用经典白色,蓝色纯属是为了迎合背景图片,其他重要的功能压缩在设置中。
想法第二版在尝试改进 UI 美化,参考了网上很多 UI 设计,做出来第二版的 UI 布局,相比于第一版的确美化程度上来说有质的飞跃,看起来更加的现代化,但是我个人感觉,这样的设计在增加美化的同时反而削弱了对写作记录本身的专注,使得使用者更加倾向于外观上的使用而不是写作内核的使用。
同样的右侧采用气泡框来展示每个内容,每个气泡框是一个小组件,用户可以自定义小组件的显示排序等,同样也可以根据我留下来的接口来开发其他小组件来完成首页的美化。
想法第三版思考了几天,这个软件的定位应该是“电子手账本”,软件设计的要灵活模块化,可以加载不同的 UI界面,不同的页面,以及插件。软件主体功能还是日记,日记事,计划,手账本以及记录一些自己 ...