操作系统(补充)
1. 操作系统的用户可以为应用程序,亦可为用户
2. 操作系统包括: 接口程序(将硬件的功能封装成简单的接口,服务应用软件/用户)和 内核 (核心的功能,用于控制硬件)
3. 操作系统的定义:一个协调,管理,控制计算机硬件及软件的控制程序
4. 内核态 与 用户态: CPU的两种工作状态(了解)
内核态: CPU执行操作系统内核所处的状态,处于内核态能够控制硬件
用户态: CPU执行用户程序/应用程序时所处的状态, 处于用户态不能控制硬件
5. ** 应用程序的启动
前提: 先启动操作系统
a. 向操作系统提交程序启动文件的路径
b. 操作系统根据文件的路径把文件的数据读入内存
c. 操作系统调用CPU执行内存中刚刚读入的程序代码
python入门
1. 编程语言分类
机器语言: 用二进制指令编程,本质是直接操作硬件;执行效率高, 开发效率低,学习难度高
汇编语言: 用英文标识符表示一串二进制,本质亦为直接操作硬件, 主要用于操作系统的开发
高级语言:根据翻译方式不同分为编译型和解释型-用人类的字符去编写程序, 主要用于开发应用程序
编译型( C语言):编译一次,拿到结果可以重复执行, 无需重新翻译;类似谷歌翻译;C语言的编译器为gcc
翻译: 程序 –》 gcc –》 机器语言; 执行: 机器语言-》CPU
优点: 执行效率高 (第二次以后)
缺点: 调试程序麻烦,跨平台性差
解释型(python, java),边翻译边执行, 需要解释器;类似同声传译
程序-》C解释器 等-》C语言的功能(一次性转换为中间格式)-》机器语言-》CPU执行
优点: 调试程序方便,开发效率高, 跨平台性高(选好解释器)
缺点:执行效率低
python 的解释器有多个种类,cpython指的是用C语言开发的python 的解释器
学习难度: 机器语言》汇编语言》编译型高级语言》解释型高级语言
执行效率:机器语言》汇编语言》编译型高级语言》解释型高级语言
开发效率:机器语言《汇编语言《编译型高级语言《解释型高级语言
相比于执行速度,开发速度为瓶颈
2. python解释器安装,多版本共存
我的电脑-》属性-》高级系统设置-》环境变量-》修改系统PATH
win10:直接添加
win7: C:Usersoldboy1;C:Usersoldboy2;C:Usersoldboy3;D:python36
mac:
/etc/profile
PATH=python的安装路径:$PATH
export PATH
source /etc/profile
3. ** python的两种运行方式
交互式:调试方便,无法永久保存代码
脚本文件方式:永久保存代码; 启动python 解释器–》将路径D: est.txt所指代码读入内存-》解释,执行
4. 变量
什么是变量: 变量时一种可以反映出状态变化的机制
** 为什么需要变量:程序的执行本质就是一系列状态的变化。 需要一种机制能够反映/保存下程序执行时状态以及状态的变化
如何定义变量: 变量名= 变量值; 内存中分配一个空间给变量值, 变量名(门牌)指向变量值,是对值的引用
变量值的引用计数:指向同一id的变量值的引用次数
增加引用计数: X=1,Y=X =》1的引用次数变为2
减少引用计数: X= ‘egon’, del Y =》0 的引用次数变为0
or X=0,X=1 =》 0 的引用次数变为0
python自带自动垃圾回收机制(了解):在程序运行中,python自动回收引用次数变为0的变量值
del y: 删除y与原变量值的绑定关系
变量的命名规范:
a. 变量名只能为字母,数字或下划线的任意组合
b. 变量名的第一个字符不能为数字 (开头为下划线的变量名比较特殊,一般推荐用字母开头)
c. 变量名不能为关键字
变量名的定义方式 (描述清楚变量值):
驼峰体: AgeOfOldboy
下划线: age_of_oldboy (推荐使用)
** 变量值的三个特征: id, type, value
id不是内存地址, 仅为在内存中的位置; id相同,type和value必相同; value 相同, type必相同但value可能不同
** is: 身份运算,比较的是id; ==:比较的是值 (身份运算)
e.g.: s1 =“xxxxxxx”, s2=“xxxxxxx”, s1 == s2(T), s1 is s2 (F)
5. 常量:约定俗成全部大写表示常量
6. 用户与程序交互
input(): 接收用户的输入,并把输入内容转成字符串
7. 注释:增强可读性
单行注释: #
多行注释:““” “””
8. 文件头:
#!/usr/bin/env python
# coding: utf-8
9. 基本数据类型
整型(数字)int : level=10 #level=int(10)——()里必须为整数
浮点型(数字)float
字符串 str : 单双三引号没有区别, 但需考虑单双引号的配合; 包含在引号内的一串字符(包括空格)
列表 list:中括号中,用逗号分隔的多个值,值可以是任意类型 索引a[1][0]
字典 dict: 花括号中,用逗号分隔的多个值,每组元素都为key:value的形式,其中value可以是任意值, key为不可变类型(规定)。字典比列表多了一个映射关系 a[key]
布尔 bool:True False, 表判断
字符串的拼接: + (效率低,不推荐,且只能字符串之间相加) / * (数字)
列表 vs 字典 : 字典的存取更快, 但浪费空间
** 所有数据类型都自带布尔值, None, 0, 空(单纯的空字符串,空列表,空字典)为 False, 其余为True
control +?:批量(解除)注释
shift + table : 整体左,右移
精简 《 可读性
10. ** 可变类型和不可变类型
可变(id不变时,值可变): 字典,列表
不可变:(值变, id必变,即创建了新的内存空间):数字,字符串
11. 格式化输出
%s 通用, 字符串, 数字
%d 用于数字
name = input (‘your name: ‘)
age = input (‘your age: ‘)
print (‘My name is %s, my age is %s’ % (name., age))
print (‘My name is %s, my age is %s’ % (‘ab’, 18))
12. 基本运算符
/ 真正除
% 取模/余
** 取幂
// 返回商的整数部分
用!=, 不用 <>
age = age+1 《=》 age+=1 : 增量赋值
逻辑与and, 或or, 非not; T or F and F, True
13. 流程控制之if else
if 条件:
缩进代码块
elif 条件:
缩进代码块
else:
缩进代码块
14. 流量控制之while循环
while 条件:
循环体
#如果条件为真,循环体执行,再次循环,判断条件
#如果条件为假, 循环体不执行, 循环终止
避免死循环
import time
num = 0
while True:
print(‘count’, num)
time.sleep (1) #模拟I/O,避免卡
num+=1
tag = True
while tag:
……..
while tag:
…….
While tag:
Tag = False
break: 退出本层循环
continue:退出本次循环 (之后的代码不执行), 进入下一次循环
while + else : 当while循环正常执行完, 中间没有被break中止的话,就会执行else后面的语句; 如果执行过程中被break, 就不会执行else的语句