计算机基础之编程
什么是编程语言
人与计算机交流的介质
什么是编程
通过编程语言写一堆文件
为什么要编程
替代劳动力
计算机组成
CPU
控制器
控制硬件
运算器
算术运算和逻辑运算
存储器
主存
优点:快
缺点:容量小/断掉即消失/贵
外存
优点:容量大/永久存储/便宜
缺点:慢
IO设备
《追寻记忆的痕迹》
输入设备
输入信息,如键盘/鼠标
输出设备
输出信息,如显示屏/打印机
32位和64位
一次性读取的二进制位
多核cpu
同一时刻干多件事情
机械硬盘工作原理
机械手臂
读取数据
磁道
存储数据
扇区
划分磁道
平均寻道时间
5ms
平均延迟时间
4.15ms
平均寻找数据时间
9.15ms
固态硬盘
基于电容存储数据
操作系统
什么是文件
操作系统提供的虚拟概念,存储信息
操作系统有什么用
把对硬件的复杂操作简单化
计算机三大组成
- 硬件
- 操作系统
- 软件
操作系统的启动
- 启动临时操作系统
- 临时操作系统启动真正的操作系统
- 关闭临时操作系统
应用程序的启动
- 双击qq(给操作系统发送指令)
- 操作系统给CPU发送指令
- CPU给内存发指令
- 内存给外存发指令
- 外存找到qq的数据丢给内存
- 启动qq
编程语言的分类
机器语言
优点:执行效率高
缺点:开发效率低
汇编语言
优点:开发效率高
缺点:执行效率低
高级语言
编译型语言
优点:执行效率高
缺点:开发效率低
解释型语言
优点:开发效率高
缺点:执行效率低
网络的瓶颈效应
网络延迟的时间远远大于程序执行的时间
执行python程序的两种方式
交互式
写一行解释一行
命令行式
python 文件.py
变量
什么是变量
描述时间万物的状态
变量的组成
变量名(接收变量值) = 变量值(具体的值)
变量名的命名规范
- 具有描述意义
- 数字/字母/下划线组成,不能以数字开头,_丢弃
- 不能用python关键字
变量名的两种定义方式
- 下划线(推荐)
- 驼峰体
常量
不变化的量(但这是约定俗称的)
变量的三种打印方式
- 打印变量值
- 打印变量内存地址
- 打印变量的数据类型
python变量内存管理
引用计数
针对变量值,变量值的引用次数
垃圾回收机制
变量值的引用计数为0,python解释器自动回收变量值
小整数池
[-5,256]之间的整数在python解释器启动就自动分配内存
花式赋值
链式赋值
a = b = 10
交叉赋值
x, y = y, x
布尔类型
所有数据类型自带布尔值,除了0/None/空/False自带布尔值位False,其他自带为True
解压缩
x, y, z = [1, 2, 3]
python与用户交互
input,接收的永远是字符串
三种格式化输出的方式
%占位符
'%s'%name
format格式化
'{}'.format(name)
f-string格式化
f'{name}'
基本运算符
算术运算符
+-*/ // % **
逻辑运算符
- and 两者都
- or 其中一者为True,则为True
- not 非
比较运算符
> >= < <= != ==
成员运算符
- in
- not in
身份运算符
- is
- is not
赋值运算符
= += -= *= /= **= //= %=
位运算符
111 000
&
011 100
011 000
- & 都为1则为1,否则为0
运算符的优先级
要优先的加括号
流程控制之if判断
单分支结构
if
双分支结构
if
else
多分支结构
if
elif 可以用无数个
else
if嵌套
if
if
流程控制之while循环
while + continue
跳出本次循环,不执行下面的代码
while + break
跳出本层循环,终止循环
while + else
没有被break掉执行else下的代码
条件控制while循环
while count < 3:
while嵌套
while
while
流程控制之for循环
for + break
跳出本层循环,终止循环
for + continue
跳出本次循环,不执行下面的代码
for + else
没有被break掉执行else下的代码
for循环嵌套
for i in range(1,10):
for j in range(i):
print(....)
print()
数字类型内置方法
整型
浮点型
字符串内置方法
列表内置方法
元组内置方法
字典内置方法
集合内置方法
散列表(哈希表)
- 乱序
- 不可重复的
- key不能为可变数据类型
深浅拷贝
拷贝
当l2为l1的拷贝对象,l1变换,l2变化
浅拷贝
当l2为l1的浅拷对象,l1内部不可变数据类型变化,l2不变;l1内部可变数据类型变化,l2变
深拷贝
当l2为l1的深拷贝对象,l1内部变化,l2不变
字符编码
python2和python3字符编码的区别
python解释器发生的三件事情
- python解释器相当于文本编辑器,读入字符(涉及字符编码)
- 识别语法/关键字,会有逻辑/语法错误
- 存储变量,然后往终端打印 (设计字符编码)
文件处理的基本使用
- 打开文件 open
- 修改文件 write / read
- 保存文件 flush
- 关闭文件 close
打开文件的三种模式
- r 只读
- w 清空写入
- a 追加写入,把光标移动到文件尾部
打开文件的两种方法
- t模式 文本模式
- b 二进制模式,适用于图片/音频/视频
绝对路径和相对路径
- 绝对路径:盘符
- 相对路径:相对执行文件的文件夹下的所有文件
with管理文件上下文
不用关闭文件,同时打开多个文件
文件的高级应用
新的文件打开的三种模式
- r+
- w+
- a+
光标的移动
以字节为单位
-
seek 移动光标, 0表示开头,1表示当前位置,2表示末尾
-
tell 告诉当前位置
-
truncate 截断文件
-
read 以字符为单位
文件的修改
with open('test.txt', 'r', encoding='utf8') as fr, open('test_swap.txt', 'w', encoding='utf8') as fw:
data = fr.read()
# 修改
fw.write(data)
import os
os.remove('test.txt')
os.rename('test_swap.txt', 'test.txt')
函数的定义
def 函数名():
代码
三种定义函数的方式
空函数
有参函数
无参函数
函数的调用
函数名()
函数的返回值
- return会返回一个值,默认返回None
- return会终止函数
- return会返回多个值
函数的参数
形参
接收实参,具有描述意义
位置形参
从左到右依次接收位置实参
默认形参
- 具有默认值 2. 默认形参必须得放在位置形参后面
实参
传值给形参,具有具体的值
位置实参
从左到右依次给位置形参传值
关键字实参
- 按照形参名传值 2.关键字实参必须得放在位置实参后面
可变长参数
*
*形参
用元组接收多余的位置实参,
*实参
打散列表,然后以位置实参传给位置形参
**
**形参
用字典接收多余的关键字实参
**实参
打散字典,然后以关键字实参传给位置形参
*形参**形参
接收所有的多余的参数
函数对象
引用
作为容器类元素
作为函数参数
作为函数的返回值
函数嵌套
外面不能引用函数内部定义的函数
名称空间与作用域
内置名称空间
放内置方法
全局名称空间
除了内置和局部就是全局
局部名称空间
函数内部的定义的变量/函数
执行顺序
内置 --》 全局 --》 局部
搜索顺序
从当前位置开始 局部 --》 全局 --》 内置 --》 报错
全局作用域
全局作用域的 x 和局部作用域的 x 没有半毛钱关系,可变数据类型除外
局部作用域
局部作用域1的 x 和局部作用域2的 x 没有半毛钱关系
global
局部的可以修改全局的
nonlocal
局部的修改外层局部的