本文已参与「新人创作礼」活动,一起开启掘金创作之路。
文件读取
open("文件名",mode='',encoding="")
用完记得关闭,否则不一定刷入文件
with open(xx) as f, open (xx) as g:
打开文件,结束自动关闭
r读,w写,r+ 读写不创建,w+,读写 覆盖创建,a追加创建,a+读写追加创建
close 刷新缓冲区关闭文件
flush 刷新缓冲区
next 下一行
read 读取指定字符数,未指定就读完
seek 移动读取指针,0 → 文件开始,1→当前位置,2→文件结束
tell 文件当前位置
truncate 删除当前到末尾的东西
writable 测试可写
readable 测试可读
Python3不允许非二进制打开的文件,相对于文件末尾的定位
序列化模块
struct、pickle、marshal和shelve
struct:
pack 打包 pack_into 按照指定格式打包 (转换为字符串)
unpack 按照指定格式解析字符流,以tuple格式返回解析结果 pack_from
calcsize() 计算fmt格式占用字节内存
csv
使用csv.reader() 来读取csv文件,csv.writer()来写入csv
使用dictreader来读取成字典dictwriter来写入字典
类与对象
__xxx__ :
init 构造
class 获取实例对象的类的类名
module 获取实例类型所在的模块
dict 获取实例对象的数据成员信息
doc 获取类的文档字符串
name 获取类的名称
module 获取类所在的模块(当前模块和包不一样哦)
bases 所有父类组成的元组
类属性为不可变的值时,不可以通过实例对象去修改类属性(修改只会对对象有效)
类属性为可变的值时,可以动态的全局改变实例对象的值
python可以动态的增加和删除成员
python 中的私有变量怎么访问?
- 通过公有方法访问
- 通过 对象名._类名__变量 访问
python中的私有方法怎么访问?
- 通过 对象名._类名__方法名 访问
装饰器
@property (读取属性) @属性名.setter (给属性赋值)
@属性名.deleter (删除属性)
方法
对象方法,至少一个self
类方法,至少一个cls参数 通过@classmethod 来定义
静态方法,毛都没有都可以 通过@staticmethod 来定义
动态增加成员和成员方法
xx.xx = xx;
xx.xx = types.MethodType(xx,xx);
type and object
type是一个特殊的类,可以看作是所有类型(包括object)的基类
Python对象都有一个成员__class__可以查看其所属的类
所有Python类都有一个成员__bases__
Python类的另一个成员__subclasses__()可以返回该类型的所有子类
继承
子类可以继承父类的公有成员,但不能继承其私有成员
要用父类东西怎么办? super().xxx(self,xx)
使用类的实例对象调用一个方法时,若在派生类中未找到,则会从左到右查找基类中是否包含该方法。
mro → 查看继承关系 python3是广度优先
利用类名.__init__来构造父类的数据
默认运算符
new(),init (),str(),eq(),del() 比较重要
add(),sub(),call()
使用print()时、使用%s和f'{}'拼接对象时和使用str(x)转换对象时优先使用str,没有就调用repr方法,再没有就要内存地址,用%r进行字符串拼接时、用repr(x)转换对象时,优先调用repr,没有调用str
call 就是调用 () ,相当于函数
模块
all 定义了就只引入 它规定的包
doc 文档注释
使用sys.path.append() 临时增加系统目录
init.py 有这个才将文件夹作为包
异常
try
except
else
finally
流程
raise 抛出异常