目录
今日内容回顾
- 文件内光标的移动案例
- 计算机硬盘修改数据的原理
- 文件内容修改
- 函数前戏
- 函数的语法结构
- 函数的定义与调用
- 函数的分类
- 函数的返回值
- 函数的参数
今日内容回顾详解
文件内光标移动案例
# 实现动态查看最新一条日志的效果
import time
with open(r'a.txt', 'rb') as f:
f.seek(0, 2) # 2模式直接到文件末尾移动0个字节
while True:
line = f.readline() #循环读取每一行
if len(line) == 0: # 判断读取的内容长度为0
# 没有内容
time.sleep(0.5) #则缓0.5秒
else:
print(line.decode('utf8'), end='') #不然则打印解码读取的内容
计算机硬盘修改数据的原理
硬盘写数据可以看成是在硬盘刻字一旦需要修改中间内容 则需要重新刻字
因为刻过的字不能从中间再分开
硬盘删除数据的原理
不是直接删除而是改变状态 等待后续数据的覆盖才会被真正删除
文件内容修改
修改文件内容的方式1:覆盖写
with open(r'a.txt', 'r', encoding='utf8') as f: #读取文件
data = f.read() #给读取的文件内容赋值给data
with open(r'a.txt', 'w', encoding='utf8') as f1: #打开文件 写模式
f1.write(data.replace('jason', 'tony')) #先data的内容替换掉,再写入f1
修改文件内容的方式2:换地写
'''先在另一个地方写入内容 然后将源代码删除 将新文件命名成源文件'''
import os
with open('a.txt', 'r', encoding='utf8') as read_f, \ #读取文件内容
open('.a.txt.swap', 'w', encoding='utf-8') as write_f: #打开文件写模式
for line in read_f: #for循环一行一行读取
write_f.write(line.replace('tony', 'kevinSB')) #将for循环读取的文件内容替换掉然后写入write_f
os.remove('a.txt') # 删除a.txt
os.rename('.a.txt.swap', 'a.txt') # 重命名文件
函数前戏
1.为什么使用函数
name_list = ['jason', 'kevin', 'oscar', 'jerry']
print(len(name_list)) #假设len不让用
#使用for count计数
count = 0
for i in name_list:
count += 1
print(count)
'''但当统计列表内数据值个数的代码需要在很多地方使用时
也就是相同的代码需要在不同的位置反复执行时,我们可以使用函数'''
代码如下:
def my_len(): #设置一个函数 起个函数名
count = 0 #函数体代码
for i in name_list:
count += 1
print(count)
my_len() # 调用函数名就可以使用该函数里的功能
2.函数与循环的区别
循环
相同的代码在相同的位置反复执行
函数
相同的代码在不同的位置反复执行
ps:相同的代码不是真正一模一样而是可以通过传入的数据不同而做出不同的改变
3.大白话讲解:
函数相当于是工具(具有一定功能)
不用函数
修理工需要修理器件要用锤子 原地打造 每次用完就扔掉 下次用继续原地打造
用函数
修理工提前准备好工具 什么时候想用就直接拿出来使用def my_len():
count = 0
for i in name_list:
count += 1
print(count)
my_len()
函数语法结构
def 函数名(参数):
'''函数注释'''
函数体代码
return 返回值
1.def
定义函数的关键字
2.函数名
命名等同于变量名
3.参数
可有可无 主要是在使用函数的时候规定要不要外界传数据进来
4.函数注释
相当于工具的说明书
5.函数体代码
是整个函数的核心 主要取决于程序员的编写
6.return
使用函数之后可以返回给使用者的数据 可有可无
函数的定义与调用
1.函数的定义阶段只检测语法 不执行代码
def func():
pass
2.函数的调用阶段才会执行函数体代码
func()
3.函数必须先定义后调用
4.函数定义使用关键字def函数调用使用>>>:函数名加括号
如果有参数则需要在括号内按照相应的规则传递参数
函数的分类
1.空函数
函数体代码为空 使用的pass或者···补全的
空函数的作用:
空函数主要用于项目前期的功能框架搭建
代码如下:
def register():
"""注册功能"""
pass
2.无参函数
定义函数的时候括号内没有参数
def index():
print('from index function')
3.有参函数
定义函数的时候括号内写参数 调用函数的时候括号传参数
def func(a)
print(a)
函数的返回值
1.什么是返回值
调用函数之后返回给调用者的结果
2.如何获取返回值
变量名 赋值符号 函数的调用
res = func() #先执行func函数 然后将返回值赋值给变量res
3.函数返回值的多种情况
3.1函数体代码中没有return关键字 默认返回None
3.2函数体代码有return 如果后面没有写任何东西还是返回None
3.3函数体代码有return 后面写什么就返回什么
3.4函数体代码有return并且后面有多个数据值 则自动组织成元组返回
3.5函数体代码遇到return会立刻结束
函数的参数
1.形式参数
在函数定义阶段括号内填写的参数 简称'形参'
2.实际参数
在函数调用阶段括号内填写的参数 简称'实参'
3.形参和实参的关系
形参类似于变量名 在函数定义阶段可以随便写 做到见名知意即可
def register(name,pwd):
pass
实参类似于数据值 在函数调用阶段与形参临时绑定 函数运行结束立刻断开
register('jason',123) 形参name与jason绑定 形参pwd与123绑定
标签:count,文件,函数,代码,初步,了解,txt,def
From: https://www.cnblogs.com/zjl248/p/16772693.html