Python学习 Day5
递归
一、特点 1、函数内部自己调用自己 2、必须有出口
举例:

Lambda表达式
也叫匿名函数
1、作用
如果一个函数右一个返回值,并且只有一句代码,可以使用lambda简化
2、语法
lambda 参数列表 : 表达式
lambda表达式的参数可有可无,函数的参数在lambda表达式中完全适用 lambda表达式能接受任何数量的参数但只能返回一个表达式的值

举例:

3、lambda表达式的参数形式
1、无参数
2、一个参数
3、默认参数
4、可变参数:*args
这里的可变参数传入到lamdba表达式中,返回值为元组
5、可变参数:**kwargs

4、lambda表达式的应用
1、带判断的lamnda
2、列表数据按字典key的值排序

高阶函数
把函数作为参数传入,这样的函数称为高阶函数。


内置的高阶函数
1、map(func,lst)
map(func,lst),将传入的函数变量func作用到lst变量的每个元素,并将结果组成新的列表(python2)/迭代器(python3)返回

2、reduce()
reduce(func,lst),其中func必须右两个参数。每次func计算的结果继续和序列的下一个元素做累积计算。注意:reduce()传入的参数func必须接收两个参数

3、filter()
filter(func,lst)函数用于过滤序列,过滤掉不符合条件的元素,返回一个filter对象,如果要转换为列表,可以使用list()来转换

文件操作
作用:就是把一些内容(数据)存储起来,可以让程序下一次执行的时候直接使用,而不必重新制作一份,省时省力
文件操作步骤: 1、打开文件 2、读写等操作 3、关闭文件
1、打开文件
在Python,使用open函数,可以打开一个已经存在的文件,或者创建一个新文件,语法为:
open(name,mode)
name:是要打开的目标文件名的字符串(可以包含文件所在路径) mode:设置打开文件的模式(访问模式):只读、写入、追加等。mode参数省略时,表示访问模式是 r

mode访问模式:(主访问模式的特点:r,w,a)
r:以只读方式打开文件,文件的指针将会放在文件的开头。这是默认模式.文件不存在会报错,不支持写入操作,只读,所有带r的都会和这个一样,文件不存在报错 rb:以二进制打开一个文件用于只读。文件的指针将会放在文件的开头。这是默认模式 r+:打开一个文件用于读写,文件指针将会放在文件的开头。 rb+:以二进制打开一个文件用于读写。文件的指针将会放在文件的开头。
w:打开一个文件只用于写,如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件,文件指针在开头 wb:以二进制打开一个文件只用于写入,如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件 w+:打开一个文件用于读写,如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件 wb+:以二进制打开一个文件用于读写,如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件
a:打开一个文件用于追加。如果文件已存在,文件指针会放在文件的结尾。也就是说,新的内容将会写入到已有内容之后。如果文件不存在,创建新文件写入 ab:以二进制打开一个文件用于追加。如果文件已存在,文件指针会放在文件的结尾。也就是说,新的内容将会写入到已有内容之后。如果文件不存在,创建新文件写入 a+:打开一个文件用于读写。如果文件已存在,文件指针会放在文件的结尾。也就是说,新的内容将会写入到已有内容之后。如果文件不存在,创建新文件写入 ab+:以二进制打开一个文件用于追加。如果文件已存在,文件指针会放在文件的结尾。如果文件不存在,创建新文件写入
r+ w+ a+区别: 1、r+没有该文件会报错,文件指针在开头所以能读取出数据 2、w+没有文件会创建文件,文件指针在开头,用新内容覆盖原内容 3、a+没有文件会创建文件,文件指针在末尾,无法读取数据(文件指针后面无数据)
2、读取文件
1、read()
文件对象.read(num)
num表示要从文件中读取的数据长度(单位是字节),如果没有传入num,那么就表示读取文件中所有数据

2、readlines()
readlines()可以按照行的方式把整个文件中的内容进行一次读取,并返回的是一个列表,其中每一行的数据为一个元素

3、readline()
readline()一次只读一行内容

4、seek()
作用:用来移动文件指针
文件对象.seek(偏移量,起始位置)
起始位置: 0:文件开头 1:当前位置 2:文件结尾
3、文件备份
`#备份文件 #1、输入目标文件名 old_name = input("请输入你要备份的文件名:") #2、规划文件名 #2.1 提取后缀,找 . 最右侧的点才是后缀的点
index = old_name.rfind('.')#返回的是所在的index
#判断文件名是否有效 if index > 0: #提取后缀 postfix = old_name[index:] #print(res) #2.2 组织新名字 = 原名字 + [备份]+后缀 #原名字就是字符串中的一部分子串 -- 切片 [开始位置:结束位置:步长] #print(old_name[:index]) new_name=old_name[:index]+'[备份]'+postfix print(new_name) #3、备份文件写入数据 #打开原文件 和 新文件 old_file = open(old_name,'rb') new_file = open(new_name,'wb') #原文件读取,备份文件写入 #如果不确定文件的大小,循环读取写入,当读取的数据没有了终止循环 while True: con = old_file.read(1024) #读取的数据没有了终止循环 if len(con) == 0: break new_file.write(con) #关闭文件 old_file.close() new_file.close()`
4、文件和文件夹的操作
在Python中文件和文件夹的操作要借助os模块里面的相关功能,具体步骤如下
1、导入os模块
import os
2、使用os模块相关功能
os.函数名()
4.1、文件重命名
os.rename(目标文件名,新文件名)
4.2、删除文件
os.remove(目标文件名)
4.3、创建文件夹
os.mkdir(文件夹名称)
4.4、删除文件夹
os.rmdir(文件夹名称)
4.5、获取当前目录
os.getcwd()
4.6、改变默认目录
os.chdir(目录)
4.7、获取目录列表
作用:获取某个文件夹下所有文件,返回一个列表
os.listdir(目录)
4.8、应用案例
批量重命名文件,添加或删除
` #将当前目录下的所有文件重命名为Python_XXXX,或将某符合格式的文件名删除 import os
#获取当前目录下所有文件名 file_list = os.listdir()
#构造条件的数据 flag = 2
#构建名字
for i in file_list: if flag == 1: new_name = 'Python_'+ i
▼text复制代码#重命名 os.rename(i,new_name) elif flag == 2: num = len('python_') new_name = i[num:] os.rename(i,new_name)
`
