首先将昨天没有讲完的计算机基础知识补齐:
一、一套完整的计算机系统:
应用程序层
操作系统层
计算机硬件层
二、什么是操作系统?
操作系统是一个协调、管理、控制计算机硬件与软件的控制程序。
所有的应用程序最终都是要计算机的硬件去做相应的工作来实现相应的功能。要想保证计算机的应用程序能够正常的运行,计算机必须要有一个能够控制计算机所有硬件(包括但不限于CPU、内存、硬盘)的程序来控制计算机的硬件来保证计算机所有硬件都处于准备好的状态。这样应用程序打开执行的时候才能够顺利让相应的硬件来配合完成工作。
在这里附加上BIOS和RAM、ROM、闪存、CMOS的知识点:
BIOS程序:是一个设备上电之后控制PC开机阶段运行的程序。存在ROM中(仅上电时运行一次)BIOS的参数配置信息存在CMOS中。
操作系统的详细启动流程:加电>>启动BIOS>>硬件检测>>CMOS>>找到启动盘>>读取第一个扇区512B>>加载bootloader>>读取操作系统内核(这是操作系统接管BIOS任务,控制计算机)
RAM、ROM、闪存、CMOS都是存储设备
存储类型 | 可存储方式 | 特点 |
RAM | 可读可写 | 易失性存储、断电后数据消失 |
ROM | 只读 | 非易失性 |
闪存 | 可读可写 | 非易失性。可读可写,但是写入速度比较慢(磁盘<闪存<内存)一般用于存储,固态硬盘,闪存的擦除次数过多就会被磨损了 |
CMOS | 易失性,主要用于存储时间,日期,CMOS存储器和时间递增的电路是有一小块电池驱动的,所以及时计算机没有家电,时间也仍然会更新,这也是BIOS配置参数存在CMOS里面的原因 | |
三、为什么要有操作系统 ?
1).把复杂的硬件操作封装成简单的功能/接口用来给应用软件或者用户使用
2).把应用程序对硬件的竞争变得有序
例如现在又Notepad++、Word、WPS三个应用程序都需要打印机这个硬件来完成打印工作,在提交了打印操作之后操作系统会将三个应用程序的打印请求有序的安排,不会出现一张纸上同时出现三个软件的打印内容的情况
操作系统分为两个部分:
接口程序:将硬件的功能封装成 简单的接口,用来给应用软件或者用户使用
内核:具体来控制硬件
应用程序的启动流程:
前提:先启动操作系统
1.向操作系统提交程序启动文件的路径
2.操作系统根据提供的路径把硬盘中的数据读取到内存中
3.操作系统调用CPU来执行内存中刚刚读入的程序代码
到这里计算机基础就算全部介绍完啦.接下来就是正式的Python入门了
四、编程语言的分类:
语言名称 | 定义 | 优点 | 缺点 |
机器语言 | 直接用二进制编程,本质是直接操作硬件 | 执行效率高、计算机无障碍理解 | 开发效率低、学习难度高 |
汇编语言 | 用英文标签代替二进制指令去编写程序,本质也是直接控制硬件 | 执行效率高、比机器语言开发效率稍高一点 | 整体开发效率低、学习难度高 |
高级语言 | 用人类能理解的表达方式去编写程序 | 开发效率最高 | 执行效率相对上边两个稍低,但是在网络延迟的环境下可以忽略不计 |
在高级语言中人类的字符计算机无法理解,程序必须经过翻译,翻译成机器语言计算机才能执行,按照翻译方式的不同,分为两种:编译型和解释型
类型 | 解释 | 特点 | 翻译执行 | 优点 | 缺点 |
编译型 | 类似于谷歌翻译(翻译器为gcc) | 编译一次,拿到结果可以直接运行,无需重复翻译 | 程序>gcc>机器语言>CPU | 执行效率高于解释型 | 开发效率低于解释型、调试程序比较麻烦、跨平台性差 |
解释型 | 类似于同声翻译 | 解释一行,执行一行,即边翻译边执行 | 程序>解释器>机器语言>CPU | 开发效率高于编译型,跨平台性好,调试程序方便 | 执行效率低于编译型 |
Python解释器的安装
Python创始人--龟叔(Guido)
Python解释器本身是龟叔用C语言写出来的一个应用程序,还有其他语言写出来的Python解释器,现在主要使用龟叔用C写出来的Python解释器。Python现在主要使用3.0以上的版本和2.7的版本,之所以是使用2.7版本是因为升级3.0之后之前用2.x开发出来的程序不能够使用3.x版本来维护,同时也是为了给使用2.x开发出来的程序的公司一个平缓的过渡期。在这里安装Python3.6.6和Python2.7.15安装过程中都选择为所有用户安装,并且不勾选将Python.exe添加到PATH(环境变量)中,之后再手动加入PATH.安装过程中遇到的PIP是为Python安装第三方的库的。
下面介绍一下将Python.exe添加到PATH中的方法:
我的电脑>属性>高级系统设置>环境变量>修改系统PATH
win10:直接添加 win7:C:\Users\电脑用户名(eg:zhangsan1);C:\Users\电脑用户名(eg:zhangsan2);C:\Users\电脑用户名(eg:zhangsan3);D:\python36
具体添加路径如图:
在环境变量中系统会已按照从上到下的顺序依次寻找环境变量,例如在本机上python36在python27的上边,这时候如果在cmd中只输入python命令打开的及时python3.6.6的解释器,如图:
将2.x和3.x版本成功安装之后,为了实现多版本共存,需要在两个软件的安装目录下将python.exe复制一个重命名以区分2.x和3.x列个不同的解释器.在使用的时候输入不同的命令就是打开不同版本的解释器从而实现解释器的多版本共存。效果如图所示:
mac/linux
vim/etc/profile>>aio(任意一个字母进入编辑模式)>>在文件的最后一行写入:PATH=/usr/local/python:$PATH>>export PATH>>按ESC,输入:wq
Python程序的两种运行方式:
1.交互式环境:输入代码立即执行 优点:调试程序比较方便 缺点:无法永久保存程序
2.代码写入文件,文件名是xxxx.py(python文件一般都是由.py为后缀的) 打开cmd执行:python3 D:\test
Python解释器运行程序必须经过的过程:
1.先启动python解释器
2.Python解释器将Python文件从硬盘读入到内存
3.Python解释器解释执行刚刚读入内存的代码,开始识别Python语法(到第三部才涉及到PY的语法问题,前两个步骤不涉及)
在python解释器中写出第一个python程序"hello world"
在成为牛逼的程序员的道路上迈出了重要的一步,哈哈哈哈哈,感觉就像阿姆斯特朗登陆月球了一样.
五、变量
1.什么是变量
解读关键字:
变:记录下来的某种状态是可以发生变化的 量:衡量/计量/记录某种状态变化的机制
所以变量是可以反映出来某种状态变化的机制
2.为什么要有变量
为了让计算机能够像人类一样去识别世间万物; 如何识别:就是把事物的特征记录下来>>变量的定义 程序的执行本质就是一系列状态的变化
3.如何定义变量
变量的定义必须遵循:先定义 后引用
定义变量:定义一个变量分为三个部分
1.变量名:变量名是访问到值的唯一方式
2.赋值符号:将值的内存地址'赋值'给变量
3.变量的值:记录状态
eg:x=10 name="onion" salary=18
4.变量的命名规范:
大前提:变量的命名应该对值有描述性的功能(不能随便乱打作为变量名)
1.变量名只能是字母、数字、下划线的任意组合
2.变量名的第一个字符不能是数字
3.关键字不能作为变量名(例如:"prtint"、"and"、"else"、"While"等等)
5.变量名的命名风格
1.驼峰体(AgeOfAllen)
2.下划线纯小写式(age_of_allen)
在Python中变量名推荐使用下划线式
Python解释器中的“垃圾”自动清理机制
解释器在内存运行的过程中,每个完整的变量都应该有变量名,赋值符号和相应的值,一旦某个变量失去了变量名称(失去了唯一一个可以找到变量的方法)剩下的值就变的毫无意义,就变成了所谓的“垃圾”,就会被python的自动清理机制清除掉。
具体的计算规则:
引用计数的概念:计算值被关联了多少个变量名
引用计数一旦为0就会变成“垃圾”,会被python的自动清理机制清除掉
引用计数增加例子:
x=10
y=x
在这里10这个值的引用计数就为2(被x和y分别引用一次)
引用计数减少例子:
x=10
del x (接触变量名x与值10内存地址的绑定关系)
x=11
(这时候10这个值就会被自动清理掉)
每次运行Python程序都在解释器中比较麻烦,这时候用PyCharm来进行程序的编写和操作就比较简便,在PyCharm中写一个“hello world”的程序,运行如下: