python小记 0x03

451 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

文件读取

open("文件名",mode='',encoding="")

用完记得关闭,否则不一定刷入文件

with open(xx) as f, open (xx) as g:

打开文件,结束自动关闭

image_6SnSZHzuo2.png

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格式占用字节内存

image_rLnHHBhUjP.png

image_0ZcG_70Tat.png

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 就是调用 () ,相当于函数

image_jHmDfiIsKO.png

模块

all 定义了就只引入 它规定的包

doc 文档注释

使用sys.path.append() 临时增加系统目录

init.py 有这个才将文件夹作为包

异常

try

except

else

finally

流程

raise 抛出异常