目录
昨日内容
文件的基本应用
什么是文件
操作系统提供的虚拟概念,用来存储信息
操作文件的流程
- 打开文件(open)
- 修改文件(write/read)
- 保存文件(flush)
- 关闭文件(close)
打开文件的三种模式
- r(只读)
- w(清空后写入)
- a(追加写入)
文件打开的两种方式
- t 文本模式(文本文件)
- b 二进制模式(音频/图片/视频)
两种方式一般不单独使用
绝对路径和相对路径
绝对路径
从盘符开始
相对路径
相当于当前执行文件的文件夹下的所有文件
with管理文件上下文
跳出with缩进外,会自动关闭文件,可以一次性打开多个文件
文件的高级应用
新的打开文件的模式
- r+,覆盖光标后(文件头)的内容
- w+,w清空文件,读的功能失去了意义
- a+,a让光标移到文件位
如果真要即写又读,打开两次文件
光标移动的应用
- read,以字符为单位,读取n个字符,默认读取全部
以下三个方法以字节为单位
- seek:移动光标的位置,0表示文件头,1表示当前位置,2表示文件末尾
- tell:告诉光标当前位置
- truncate:阶段处理,truncate(0),清空文件
文件的修改
文件没有插入,只有覆盖的说法
with open('test.py','r',encoding = 'utf8') as fr,\
open('test_swap.py','w',encoding = 'utf8') as fw:
data = fr.read()
data = data.replace('sb','s')
fw.write(data)
fw.flush
# for line in fr:
# line = line.replace('sb','s')
# fw.(line)
# fw.flush
import os
os.remove('test.py')
os.rename('test_swap.py','test.py')
今日内容
函数的定义
def 函数名(等同于变量名):
"""对函数的描述信息"""
代码块
函数定义的特性:函数定义过程,只检测语法,不执行代码
示例:
def guess():
"""给定两个数,打印较大的数"""
s = 10
y = 20
if s > y :
print(s)
else:
print(y)
print(guess._doc_) # 打印注释内容
print(len._doc_) # 打印len内置方法的作用
定义函数的三种形式
空函数
def func():
pass
有参函数
def guess(x,y):
"""给定两个数,打印较大的数"""
if x > y :
print(x)
else:
print(y)
无参函数
def guess():
"""给定两个数,打印较大的数"""
s = 10
y = 20
if s > y :
print(s)
else:
print(y)
函数的调用
使用函数 guess()
,加括号可以区分变量名
guess() # 调用函数
print(guess) # 函数的地址
函数的返回值
返回值:返回一个值
def guess():
"""给定两个数,打印较大的数"""
s = 10
y = 20
if s > y :
return s
else:
return y
num = guess()
print(num) # 20
return的特性
- return返回一个返回值(所有数据类型)
- 没有return默认返回None,如果没有返回值也返回None
- return会终止函数,不运行下面代码,假设有多个return,运行到第一个就会终止
- return可以返回多个值,返回值以元组的形式接收
函数的参数
形参
定义函数阶段的产物,具有接受实参的作用,具有描述意义
def guess(x:int,y:int = 30)->list:
"""给定两个数,打印较大的数"""
if s > y :
print(s)
else:
print(y)
- :后面规定的参数的数据类型,约定俗成
- ->规定的是return的数据类型
位置形参
从左都右,依次接受实参的值
默认形参
- 如果调用时不传值,使用默认值:如果传值了,使用传的值
- 默认形参必须放在位置形参后面
实参
调用阶段的产物,传给形参一个具体的值,具有具体的值(可以为所有数据类型)
位置实参
从左到右依次给位置形参传值,一一对应
关键字实参
- 按照形参名给形参传值(使用情况基本没有)
- 关键字实参必须在位置实参后面
函数的参数一般0~3个,一般,不要超过三个
可变长参数
*
把多余的值接收
可变长形参
def min_4(*lt): # 把所有传过来的实参全部接收,并且以元组的形式存储
a,b,c,d,*_ = lt
res1 = min_2(a,b)
res2 = min_2(c,d)
return min_2(res1,res2)
res = min_4(1,2,3,4)
print(res)
可变长实参
def min_4(a,b,c,d):
res1 = min_2(a,b)
res2 = min_2(c,d)
return min_2(res1,res2)
lt = [1,2,3,4]
res = min_4(*lt) # 相当于做了解压缩,也就是把lt内的元素一个一个取出来传给形参