文件的修改
计算机硬盘修改数据的原理
硬盘有两个形态
占有态和自由态
我们在删除数据的时候,就是将原来的位置标记为自由态,在下载新数据落到这个自由态原本的标记位置就会直接覆盖。 文件数据在硬盘上是刻死的,不可能中间添加新的内容,只能将老数据移除之后,在刻上新数据
修改方法1
1 先将文件内容一次性读写到内存中,在使用只写不读模式就行修改,在文件修改过程中同一数据只有一份,如果文件很大会造成内存溢出
a.txt 你看你擦
with open(r'a.txt', 'r', encoding = 'utf8') as f:
data = f.read()
with open(r'a.txt', 'w', encoding = 'utf8') as f1:
f1.write(data.replace('你看','我看'))
结果为 我看我擦
修改方法2
用写的模式打开原文件,在用写的模式打开一个临时文件,一行行读取原文件内容。修改完成后写入临时文件,删除原文件将临时文件重命名为原文件名。
a.txt 你看你擦
import os
with open(r'a.txt', 'r', encoding = 'utf8')as read_f,\
open (r'a.txt.swap', 'w', encoding = 'utf8') as write_f:
for line in read_f:
write_f.write(line.replace('你看', '我看'))
os.remove('a.txt')
os.rename('a.txt.swap', 'a.txt')
函数简介
函数其实就是像工具,提前定义好之后,就可以拿出来反复的使用。
len用法
l1 = '你看你擦'
print(len(l1))
如果可以使用len方法,可以用函数
def my_len():
count = 0
for i in l1:
count += 1
print(count)
my_len() # 调用函数代码
函数与循环的区别
1. 在不同的地方,反复执行相同的代码>>>>函数
相同的代码不是真正一样的,是可以通过传出的数据不同做出不同的改变
2. 在相同的地方,反复执行相同的代码>>>>循环
函数的语法结构
def + 函数名 + (参数):
"""函数的注释"""
函数体代码
return 返回值
1.def 定义函数的关键字
2.函数名 函数名类似变量名,命名与变量名一致,见名知意
3.参数 可有可无,主要规定使用函数的时候规定要不要外界传数据进来
4.函数注释 解释函数的主要功能使用方法,和说明书类似
5.函数体代码 函数的核心功能
6.return 后面加的东西执行完函数就会返回 可有可无
函数的定义与调用
定义i函数需要使用def关键字
定义函数的过程不会执行函数,只会检测它的语法
例如:
def func():
whydeuge 定义的时候不会发生报错
def func():
if 语法定义时语法错误就会发生报错
函数在调用阶段才会执行函数体代码,函数必须先定义后调用。
函数的分类
1.空函数
函数体代码为空时,常使用pass或...来补全语法
空函数主要用于项目前期的功能搭建,提醒我们这里该写什么功能。
def register():
"""注册功能"""
pass
--------------------------------------------------
2. 无参函数
定义函数的时候我们没有在括号内填写参数
def index():
print('aaaaaa')
-------------------------------------------------
3.有参函数
定义函数的时候括号内有填写参数 调用参数的时候括号传参数
def func(a):
print(a)
函数的返回值
返回值:
在我们调用函数时会得到一个结果这个结果就是返回值
如何获取返回值:
变量名 = 函数调用
操作:
def test():
print('你看你擦')
没有return关键词时,返回值是None (空)
------------------------------------------------
def test():
print('你看你擦')
return
a = test()
print(a) # None
有return关键词,没返回值
------------------------------------------------
def test():
print('你看你擦')
return '你看你擦'
a = test()
print(a) # 你看你擦
有关键词return,有返回值
------------------------------------------------
def test():
print(' 你看你擦')
return '你看你擦', '一Giao窝里giao'
a = test()
print(a) # ('你看你擦', '一Giao窝里giao')
关键词 return后面可以跟多个值,用逗号隔开,结果是元组,你也可以手动在把值改成列表,结果就是列表
------------------------------------------------
注意:
函数体代码里遇到return会立刻解释函数运行
函数体代码里的 return 相当于 循环体代码中的 break
函数体代码中没有return关键字 默认返回None
函数体代码有return 如果后面没有写任何东西还是返回None
函数体代码有return 后面写什么就返回什么
函数体代码有return并且后面有多个数据值 则自动组织成元组返回
函数的参数(超级重要)
定义时小括号里的参数,用来接收参数用的称为“形参”
调用是小括号里的参数,用来传递参数的称为“实参”
def hello(a): # 这个a就是形参
pass
def hello(a):
hello('你好') # 这个‘你好’就是实参
形参a 和实参 你好 绑定 # 临时绑定
------------------------------------------------
形参与实参的关系
形参类似于是变量名、实参类似于是变量的值
在调用函数的时候传入实参 会与形参临时绑定
函数运行结束之后自动解除绑定
标签:文件,return,函数,代码,修改,print,txt,def
From: https://www.cnblogs.com/LiaJi/p/16773310.html