冯诺依曼体系架构
- CPU有运算器和控制器组成
- 运算器,完成各种算术运算、逻辑运算、数据传输等数据加工处理
- 控制器,控制程序的执行
- 存储器,用于记忆程序和数据,例如内存
- 输入设备, 将数据或者程序输入到计算机中,例如键盘,鼠标
- 输出设备,将数据或程序的处理结果展示给用户,例如显示器、打印机等
- CPU中还有寄存器和多级缓存Cache
编程基础
- 计算机语言
- 机器语言
- 一定位数组成二进制的0和1的序列,称为机器指令。机器指令的集合就是机器语言
- 与自然语言差异太大,难学、难懂、难写、难记、难查错
- 汇编语言
- 用一些助记符号代替机器指令,称为汇编语言。ADD A,B 指的是将寄存器A的数与寄存器B的数相加得到的数放到寄存器A中
- 汇编语言写好的程序需要汇编程序转化成机器指令
- 汇编语言只是稍微好记一些,可以认为就是机器指令对应的助记符。只是符号本身接近自然语言
语言分类
- 低级语言
- 面向机器的语言,包括机器语言、汇编语言
- 不同的机器不能通用,不同的机器需要不同的机器指令或者汇编程序
- 高级语言
- 接近自然语言和数学语言的计算机语言
- 高级语言首先要书写源程序,通过编译程序把源程序转化成机器指令的程序
- 1954年正式发布的Fortran语言是最早的高级语言,本意是公式翻译
- 人们只需要关心怎么书写源程序,针对不同机器的编译的事交给编译机器关心处理
- 编译语言,把源代码转换成目标机器的CPU指令
- 解释语言,解释后转换成字节码,运行在虚拟机上,解释器执行中间代码
Python基础语法
- 注释——-#标注的文本
- 数字
- 整数,不区分long和int
- 进制0xa、0o10、0b10
- bool,True、Flase
- 浮点数
- 1.2、3.1415、-0.12、1.46e9=1.46*10^9
- 复数 1+2j
- 字符串
- 使用’ ” 单双引号引用的字符的序列
- ”’和”“”单双三引号,可以跨行、可以在其中自由的使用单双引号
- 在字符串前面加上r或者R前缀,表示该字符串不做特殊的处理
- 转移序列
- \ \t \r \n \’ \”
- 前缀r,把里面的所有字符当普通字符对待
- 缩进
- 续行
- 在行尾使用\
- 如果使用各种括号,认为括号内是一个整体,内部跨行不用 \
- 标识符
- 一个名字,用来指代一个值
- 只能用字母、下划线和数字
- 只能以字母或者下划线开头
- 不能是Python的关键字
- Python是大小写敏感的
- 常量
- 一旦赋值就不能改变值的标识符
- Python中无法定义常量
- 字面常量
- 变量
Python的语言类型
- Python是动态语言、强类型语言
- 静态编译语言
- 动态编译语言
- 不用事先声明类型,随时可以赋值为其它类型
- 编译时不知道是什么类型,很难判断
- 强类型语言
- 弱类型语言
运算符Operator
+ - * / % **
- 自然除 / 结果是浮点数
- 位运算符
- & | ~ ^ << >>
- 常用方式:乘除2 的倍数,32//4相当于32>>2
- 12, 0xc, 0o14, 0b110
~12等于多少,为什么
12源码 0000 1100
12反码 0000 1100
12补码 0000 1100
12按位取反 1111 0011
1111 0011在计算机中表示负数
符号位不变,按位取反 加 1 1000 1101
-13
- 运算符
- 赋值运算符
- a = min(3,5)
- += -+ *= /= %=等
- x = y = z = 10
- 成员运算符
- 身份运算符
- 运算符优先级
- 算数运算符>位运算符>身份运算符>成员运算符>逻辑运算符
- 善用括号,提升易读性
表达式Expression
- 由数字、符号、括号、变量等的组合
- 算数表达式
- 逻辑表达式
- 赋值表达式
- python中,赋值既定义,如果一个变量已经定义,赋值相当于重新定义
内存管理
- 引用计数
- 当引用计数为0,它就可以被垃圾回收
- 垃圾回收GC
程序控制
单分支结构
if condition:
代码块
##condition必须是一个bool类型
if 1 < 2:
print("1 less than 2")
- 代码块
- 类似于if语句的冒号后面的就是一个语句块
- 在if、for、def、class等
- False等价布尔值,相当于bool(value)
多分值结构
if...elif...else语句
if condition1:
代码块1
elif condition2:
代码块2
elif condition3:
代码块3
......
else:
代码块
a = 5
if a < 0:
print("negative")
elif a == 0:
print("zero")
else:
print("positive")
分支嵌套
score = 80
if score < 0:
print("wrong")
else:
if scoree == 0:
print('egg')
elif score <= 100:
print('right')
else:
print('too big')
循环–while
while condition:
block
当条件满足即Conditon为True,进入循环体,执行block
for i in range(10):
print(i+1)
循环 continue语句
- 中断当前循环的当前执行,继续下一次循环
- 举例:计算10以内的偶数(for循环)
for i in range(10):
if i
continue
else:
print(i)
循环 break语句
- 终止当前循环
- 举例:计算1000以内的被7整除的 前20个数(for循环)
count = 0
for i in range(7,1000,7):
print(i)
count += 1
if count >= 20:
break
循环 continux、break语句
- 总结
- continue和break是循环的控制语句,只是影响当前循环,包括while、for循环
- 如果循环嵌套,contunue和break也只是影星语句所在的那一层循环
- continue和break不是跳出语句块,所以if cond:break不是跳出if,而是终结if外的break所在的循环
循环 else子句
while condition:
block
else:
block
for elemrnt in iteratable:
block
else:
block
- 如果循环正常的执行结束,就执行else子句;如果使用break终止,else子句就不会执行