00 变量的本质 ---- 对象
python内部使用了一个对象模型,用来存储变量以及对应的数据,python中的任何类型的变量都会被翻译成一个对象,这就是变量的本质.python
python内部的对象模型由3部分组成: 身份(函数id) 、类型(type) 、 值(即变量自己)算法
- 身份: 用来标识对象的惟一标识,经过调用函数id能够获得它,个人理解是它多是对应存储的内存地址索引的一个id值,能够调用函数id()查看id值;
- 类型: 用来代表对象能够存放的类型,该具体类型限制了该对象保存的内容、能够进行的操做、遵循的规则,能够调用函数type()查看类型;
- 值: 即该对象存储的具体数值,变量自己即是它的值.
python中内置了两个帮助函数:
- dir: 用来查询类或者类型的全部属性,如: dir(list)
- help: 用来查询类或者类型具体的说明文档,如: help(int)
01 python3的六个标准的数据类型
- Number(数字)
- String(字符串)
- List(列表)
- Set(集合)
- Tuple(元组)
- Dictionary(字典)
python3的六个标准数据类型中:缓存
- 不可变数据(3个): Number(数字) 、String(字符串) 、Tuple(元组)
- 可变数据(3个): List(列表) 、 Dictionary(字典) 、 Set(集合)
02 数字类型
整数(int) 、 浮点数(float) 、复数(complex) 、 布尔(bool)bash
- python3只有一种整数类型int,表示为长整型,没有python2的Long
- 浮点数精确度问题
0.1+0.2 = 0.30000000000000004
0.1+0.7 = 0.7999999999999999
复制代码
能够导入模块 decimal (十进制)
`import decimal`
a = decimal.Decimal('0.1')
b = decimal.Decimal('0.2')
print(a+b) // 0.3
复制代码
x = 1 + 2j // 1.0是实部的值,2.0是虚部的值
x.real 获取实部的值
x.imag 获取虚部的值
复制代码
关于复数: z = a + bj
- 复数的模:
|z|= √ a^2+b^2
- 共轭复数:
- 实部相等,虚部互为相反数;
- 在复平面上,表示两个共轭复数的点关于x轴对称;
- 若是虚部为0,则共轭复数就是自己.
Fraction(x,y): 分子为x,分母为y
03 list 列表: 切片用法
- list.append() //添加对象
- list.extend() //添加一个可迭代的对象
extend()方法的参数必须是一个可迭代对象,新的内容是追加到原列表最后一个元素的后面app
- list.insert() //两个参数,第一个是插入的位置,第二个是插入的内容
- list.remove() //删除指定元素
- 若是列表中存在多个元素,只会删除第一个匹配的元素
- 若是指定元素不存在,程序会报错
- list.pop() //出栈,返回出栈的元素
- list.clear() //清空列表
- list.sort() //排序
- list.reverse() //反转列表
- list.count() //查找某个元素出现的次数
- list.index() //查找某个元素的索引值
1.若是是多个相同元素会返回第一个出现的元素索引值
2.还有两个参数: start和end,能够指定查找的起始和结束位置函数
- list.copy() // 拷贝(浅拷贝)列表也可使用切片: list[:]
04 python的一些特殊算法
x == ( x // y ) * y + ( x % y )spa
- x // y: x除以y的结果(地板除: 相除以后得出一个整数结果,若结果不为整数,则向下取整)
- abs(x): x的绝对值,若是x是复数,则返回复数的模
- int(x),float(x): 转换成对应的数据类型
- complex(re,im): 返回一个复数,re是实部,im是虚部
- c.conjugate(): 返回c的共轭复数
- pow(x,y): 返回x的y次方
- x ** y: 返回x的y次方
- divmod(x,y): 返回(x//y,x%y)
运算符优先级(参考): 从高到低排序
- 绑定或元组显示, 列表显示, 字典显示, 集合显示
- x[index]\ x(args)\ x.attribute: 下标, 切片, 函数调用, 属性引用
- await x: await 表达式
- **: 指数
- +x, -x ~x: 正号,负号,按位翻转
- *, @, /, //, %: 乘法, 矩阵乘法, 除法, 地板除, 取余
- +, -: 加法, 减法
- << , >>: 移位
- &: 按位与
- ^: 按位异或
- |: 按位或
- in, not in, is, is not, < , <=, >, >=, !=, ==: 比较
- not: 布尔"非"
- and: 布尔"与"
- or: 布尔"或"
- if-else: 条件表达式
- lambda: Lambda 表达式
05 循环和分支
python的循环和分支的执行块是按照缩进来断定的,因此要注意缩进翻译
if-else分支判断:
就是普通那样的if-else,python还有一种奇怪的写法(读起来感受很累): 'a' if True else 'b'
若是条件为真,则值为a,不然值为bcode
while循环:
符合条件则一直循环下去,分别有条件不符合,break,continue能够控制跳出循环;对象
break和continue的区别:
break是直接跳出并结束循环,continue则是跳出这次循环,会继续执行下一个符合条件的循环,若是while循环以后还有一个else,break会直接跳过它,而continue不会.
for循环: 也能够搭配break,continue使用
语法: for 变量 in 可迭代对象(Iterable):
statement(s)
复制代码
可迭代对象: 便可循环的对象,例如str,list,dict等
若是要循环整型,能够配合range()函数使用
06 python的缓存重用机制
- 以前在程序中建立过,就直接存入缓存,后续再也不建立, 生效范围: 全局
- 范围在[-5,256]之间的小整数
- 字符串对象
- 只在该代码块内建立过就直接缓存,后续再也不建立, 生效范围: 本代码块
- 大于256的整数
- 大于0的浮点型对象
- 不进行缓存,每次都须要额外建立
- 小于0的浮点型对象
- 小于-5的整数