- 反射
- 在其他语言中 ,通过变量名访问对象通常称为反射,python 中可以通过getattr以及hasattr和setattr函数实现一些代码的高效维护和复用。
- 鸭子类型(判断对象是否具有某功能)
- 使用isiterable()判断是否可迭代
- 使用isinstance(a,list) 判断是否列表
- 切片 s[:3]
- datatime模块:
- strftime方法将datetime转换为字符串
- 字符串可以通过strptime函数转换为datatime对象
- 替换时间个体值(dt.replace(minute=0,second=0))
- 时间间隔 datatime.delta(17,7179)相隔17天7179秒
- 控制流
- if 、elif和else
- for 用于遍历一个集合或者一个迭代器
- continue
- break
- while
- pass
- range返回一个迭代器(起始,结尾,步进)range产生的整数包含起始但不包含结尾
- 三元表达式(会降低代码可读性,不建议多用)
- 元组
- 不可变
- 元组拆包
- 遍历元组或列表的组成的序列
- 从函数返回多个值
- 元组方法:比较少,count常用
- 列表
- 增加和移除元素(append,insert,remove,pop,in,not in)
- 连接和联合列表(‘+’,extend比+速度要快)
- 排序(sort)
- 二分搜索和已排序表的维护(bisect查找元素应该被插入的位置,insort按顺序插入到相应位置)
- 切片
- 內建序列函数
- enumerate(遍历序列时追踪当前元素的索引,用于建立索引,用于将列表构建为字典)
- sorted(返回一个排好序的列表)
- zip(将列表,元组,或其它序列的元素两两配对,新建一个元组构成的列表)
- reversed(将一个列表倒序排列,需要实例化,使用list函数或使用for只能迭代一次)
- 字典
- 使用del或pop 删除值,pop会在删除的同时返回删除值,并删除键
- 使用keys方法和values方法实现键,值的迭代器,但迭代出的键值没有顺序,但键,值输出的顺序是对应的。
- 使用update将两个字典合并或者做值替换更新
- 从序列生成字典
- 使用zip 将两个元组做连接后生成字典
- 字典推导式
- 默认值的使用(dict.get(a,default),setdefault(),defaultdict(list))
- 有效的键类型 hash()
- 集合
- 集合元素唯一性,无序性
- 创建:字面值集与大括号使用、set函数生成
- union 联合两个集合,并集
- intersection 交集&
- copy
- 集合中的要包含列表的话,必须先转成元组
- 列表,集合和字典的推导式
- for 循环的高级替代用法,省略,自行学习
- 函数 (def xx: return xx)
- 命名空间、作用域,本地函数
- global 全局变量来存储系统中的某些状态,若大量使用,则需要考虑使用面向对象编程了。
- 返回多个值(return 元组,或者字符串+元组组成的字典表)
- 匿名函数
- 柯里化:部分参数应用
- 生成器
- 迭代器是一种用于在上下文中(如for循环)向python解释器生成对象的对象。
- 生成器是构造新的可遍历对象的一种简洁方式, 普通函数执行并一次返回一个结果,而生成器则惰性的返回一个多结果序列,在每个元素产生后暂停,直到下一个请求。
- 生成器创建方法:return 改成yield
- 实际调用生成器时,代码不会立即执行,只有请求生成器中的元素时(如遇到迭代器),才会执行
- 生成器表达式
- 简单方式创建生成器:++只需要将列表推导式的中括号改成小括号即可++!
- 多数情况下,生成器表达式==可以作为函数参数==用于替换列表推导式
- itertools模块
- 适用于大多数数据算法的生成器集合
- 异常处理 (try except finally)
- 文件与操作系统
- path
- open(path)
- with open(path) as f:
- read/readlines
- seek
- tell(以上都是操作字节游标)
- python面向对象知识
# 使用实例调用实例方法
ca = ClassA()
ca.func_a()
# 如果使用类直接调用实例方法,需要显式地将实例作为参数传入
ClassA.func_a(ca)