第三课:集合/文件处理/函数基础(笔记)
1.集合类型
作用:
1、去重
2、关系运算
求交集 &号
求差集 -号
求并集 |号
求对称差集 ^号
集合相等 ==
父集 >,>=(只有两个集合存在包含和被包含的关系时才可以进行大小的比较)
子集 <,<=(只有两个集合存在包含和被包含的关系时才可以进行大小的比较)
3、集合内置方法
intersection(交集)
difference(差集)
union(并集)
symmetic_difference(对称差集)
issuperset(父集)
issubset(子集)
difference_update()
isdisjoint()
discard(删除元素,需指定,不存在不报错)
pop(删除元素,无需指定,随机删除)
remove(删除元素,需指定,不存在则报错)
update(增加元素,加多个元素,重复元素会去除)
add(增加元素,只能加1个)
4、for循环遍历集合
定义:逗号分隔开多个元素
注意:
1、每一个元素都必须是不可变类型,
2、集合内的元素不能重复
3、集合内元素无序
4、不能保证原有的顺序
5、不能针对可变类型去重
2.文件处理
1、什么是文件
文件是操作系统维应用程序或者用户提供的一个操作硬盘的虚拟单位
2、为什么要用文件
应用程序中需要经常将内存的数据永久保存下来,而英语程序又无法直接操作硬件,
只能通过操作系统提供的虚拟单位去间接地操作硬盘
3、如何用文件
open(r'd:\xxx\a.txt',mode='r',encoding='utf-8')#向操作系统发送打开文件操作请求
data = f.read()#在应用程序拿到一个返回值,该值指向操作系统打开的文件
print(data)
f.close()#操作系统发生关闭文件的请求
总结:文件处理的步骤
1、打开文件
2、读r/写w文件
3、关闭文件(with使用关闭文件,避免忘记回收资源)
4、打开文件的模式
r:只读模式,rt模式需指定字符编码,t代表文本模式
文件不存在则报错
文件存在,并且文件指针调到文件的开头
w:只写模式,wt模式每次都是重新打开,那么文件都会清空,指针跳到开头
文件不存在时,会创建一个空文档,并且文件指针跳到文件开头
文件存在时,会将内容清空,并且文件指针跳到文件开头
方法:
write
writelines(将列表写入文件中)
a:只追加写模式,at模式
文件不存在时,会创建一个空文档,并且文件指针跳到文件的末尾
文件存在时,也会将指针跳到文件的末尾
5、控制操作文件内容的模式有两种(不能单独使用,必须用r/w/a连用)
t:text文本模式,该模式下操作文件内容的单位都是字符串,该模式只适用于文本文件
b:Bytes二进制模式,该模式下操作文件的内容的单位都是bytes,该模式适用于所有类型的文件
强调:一定不能指定encoding参数
6、import sys(argv参数使用获取用户命令行输入的参数,参数和参数之间用空格区分)---了解内容
7、了解:+
r+可读可写
w+
a+
8、文件内指针操作(掌握)
seek:
第一个参数:控制移动的字节数
第二个参数:控制移动的参照物,值可以为0,1,2
with open ('a.txt',mode='rt',encoding='utf-8') as f:
f.seek(3,2) #单位是字节
0:参照文件开头,强调:除了0模式以外都只能在b模式下使用,即1和2模式只能用在b模式下
1:参照当前位置(只能在b模式下使用)
储备:read(n),n在t模式代表字符个数,n在b模式下代表字节个数
2:参照文件末尾(只能在b模式下使用)
truncate:#从文件开头截取到3bytes位置,其余的删除
9、文件修改
文本编辑器修改文件的原理:(优点修改期间硬盘里面只有一份数据,缺点占用内存过高)
1.先将文件内容全部读入内存
2.将内存中修改完毕
3.将修改的结果覆盖写会硬盘
一行一行的读,一行一行的改:(优点同一时刻在内存中只存在文件的一行内容,缺点在修改期间硬盘保存两份文件)
1.以读的模式打开源文件,以写的模式打开一个临时文件,
2.然后for循环读取原文件一行行内容,每读一行则修改一行,将修改的结果写入临时文件,直到把文件都遍历完
3.删除原文件,将临时文件重命名为原文件名(import os remove/rename )
3.函数
1、什么是函数
函数是具备某一功能的工具,函数的使用必须遵循先定义,后调用的原则
事先准备工具的过程即函数的定义
拿来就用即函数的调用
2、为何用函数
1.程序的组织结构不清晰,可读性差
2.冗余代码过多
3.程序的扩展性极差
3、函数分类、如何运用函数
函数分类:
内置的函数
自定义函数
4、定义函数
1、语法
def 函数名(参数1,参数2,...):"""文档注释"""
code1
code2
...
return 返回值
2、定义函数阶段发生哪些事情
函数名指向函数的内存地址(类似变量的命名),不会执行函数体代码
3、定义函数的形式
1.无参函数
def func1():
print('hello')
2.有参函数
def func1(x,y):
print('hello')
3.空函数(占位,结构清晰)
def func1():
pass
5、调用函数
1.语法:函数名()
2.调用函数发生了什么事情
1).根据函数名找到函数的内存地址
2).函数的内存地址加括号可以触发函数体代码的执行
3.调用函数的三种方式
1).表达形式
2).当作参数传给其他函数
6、函数的返回值
1.什么是函数的返回值
函数的返回值是函数体代码运行的结果
2.什么时候用函数的返回值
3.如何用
return值:
1、返回值没有类型限制
2、返回值没有个数限制(逗号分割多个值,返回元祖;一个值则返回一个值;没有return默认返回None)
return是函数
函数内可以有多个return,但只要执行一次,整个函数就立即结束,并且将后的值当作本次调用的结果返回