标签:光标位置 没有 lines 问题 对象 pen 通过 正则 二进制
1.包的导入
2.文件open读取路径问题 如何方位其他包下的文件
需要复习的 re 导入 log 非固定参数
作用域:
装饰器: 前置知识闭包
序列化:
正则:
os,sys,time,迭代器,生成器,内置函数,递归,文件操作。
文件操作
utf - 8 decode -unicode
unicode encode gbk,utf-8
wb 写二进制,写图片,写内存
图片视频是二进制
读所有
read()
读一行
for line in file:
print(line)
追加模式 a
读写 r+ 先读后写,在后面追加
写读 w+ 创建,在写,可以读新写的
文件操作方法。
fineno 返回文件句柄在内核中的索引值
flush把文件从内存buffer中强制刷新到硬盘
文件在close时候,才会刷入硬盘,否则在内存中,如果直
接写入硬盘会很慢,buffer满了才会刷入
主动刷入硬盘需要用flush
readable 判断文件是否可读(用于判断是不是特殊文件,linux,w
文件也不能读)
readline 只读一行,遇到\r or \n 为止
f.tell 返回当前光标为止
f.seek(50) 光标位置
这个50究竟是什么: 只是移动了光标位置,并没有读取内容
read(1)<<读了一个字符
tell seek 找的都是字节 utf-8汉字3个字节 字母,数字
,符号,1个字节
gbk 汉字2个字节 字母,数字,
符号1个字节
writeable 文件是否可写
f.truncate() 按指定长度截断文件 从当前位置开始截断
路飞学院 seek(3) --- f.truncate() --- 路
路飞学院 seek(3) ---- f.truncate(6) --路飞 函
数内传入值相当于从开头获得到传入值位置
readlines():
fileObject.readlines( );
返回列表,包含所有的行。
修改文件
无法直接插入,因为硬盘的存储原理导致
只有一个办法,新建一个文件,写入,替换旧文件,改名
不能读取所有,不知道文件有多大,会撑爆内存
所以可以每读一行,检测是否有修改内容,修改后,写入新文件,再
替换
要么 占硬盘(写新文件)
要么 占内存(全部读取),如果文件变小了,可以truncate把后面
的去掉
line = line.replace(old_str,new_str)后面替换前面
函数:
定义 函数是指将一组语句的集合通过一个名字封装起来,要想执行
这个函数,只需要调用函数名即可
参数
形参:只有在被调用时,才会分配内存单元,调用结束时释放内存。
形参只在函数内部有效,调用结束后不再使用
实参 可以是常量,变量,表达式,函数,无论是何种类型,在进行
函数调用时,必须有确定值,才能传给形参。
默认参数
def stu (name,age,country,course)>> def stu
(name,age,course,country="cn")
传入参数时,country可以不用写
为什么默认参数要放在位置参数(非默认参数)后面?
传值需要与形参一一对应
关键参数
在传参时候会用 指定一个参数名,给这个参数指定值 stu
(‘alex‘,course=python,age=19)
关键参数要放在位置参数之后
作用域:
python中函数就是一个作用域 局部变量放置在其作用域中
代码定义完成以后,作用域已经生成,作用域链向上查找
00000000000000000000000000000000000000000000000000
map()函数
map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list
,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的
list 并返回。
高阶函数
变量可以指向函数,函数的参数能接受变量,那么 一个函数就可以
接受另一个函数作为参数,即高阶函
def a():
return
def b(x):
pass
b(a)
1.接受另一个函数当参数的函数 就是高阶函数
2.返回结果里包含了函数,就是高阶函数
递归:
好理解 自己调用自己
几个特点
1.必须有结束条件
2.深层递归,规模要比上一次减少
3.效率低,过多会栈溢出
尾递归
例如:
def a(x):
print(x)
return a(x+1) <调用下一层时候退出了,用不到第一层的调用
,因为已经返回,下一层跟本层没有联系,就可以优化这个。
python语言中,没有尾递归优化。
内置方法
abs()取绝对值
dict()转字典
help()帮助
min()max() 取最小,最大
all() 判断列表所有的值都是true,返回true 1 2 3 -1 -2 真,0
假
bool() 判断是True还是false
但是 all([])空列表 返回的是True bool([])是false
any() 如果列表中任意一个是True,返回True
dir() 打印当前函数存在的所有变量
生成器
L = (x*x for x in range(10))
def fib(max):
n,a,b = 0,0,1
while n < max
yield b
a,b = b,a+b
n += 1
return ‘done‘
f = fib(6)
可迭代 Iterable
集合类 列表,元组,字典,集合,字符串
生成器generator ,包括生成器和带yield的函数
判断
isinstance([],Iterable) > True
可for循环
迭代器:
可以被next()函数调用并不断返回下一个值得对象成为迭代器
Iterator
isinstance([],Iterator) > False
生成器都是迭代器
把可迭代对象变成迭代器:iter()
isinstance(iter([]),Iterator) >True
补充
参数位置顺序:位置参数-关键参数-默认参数-非固定参数
装饰器必备条件:1.高阶函数。2.闭包
标签:光标位置 没有 lines 问题 对象 pen 通过 正则 二进制
原文地址:https://www.cnblogs.com/alexstraze/p/9357674.html