python笔记day13-文件、函数

f.seek的应用案例

模拟tail -f 检测文件追加内容

#追加
with open('access.log','at',encoding='utf-8') as f:
    f.write('202011111111111 xxx xxx 100w')
import time
with open('access.log',mode='rb') as f:
    #将指针跳到文件末尾 f.read()耗内存
    f.seek(0,2)
    while True:
        line=f.readline()
        if len(line)==0:
            time.sleep(0.3)
        else:
            print(line.decode('utf-8'))

文件修改的两种方式

#张三 山东 179 80在某个词后面添加,直接写会覆盖
#硬盘中只有覆盖 
#文本编辑器修改内存后全部覆盖给硬盘 修改断电数据丢失
#方式一 全部读入内存修改后存入硬盘-文本编辑工具多是此方法
#省硬盘空间 耗内存空间
with open('access.log','rt',encoding='utf-8') as f:
    res=f.read()
    data=res.replace('xxx','egen')
    print(data)
with open('access.log','wt',encoding='utf-8') as f1:
    f1.write(data)
202011111111111 egen egen 100w202011111111111 egen egen 100w
#方式二:按行读入 写入新文件并替换
#耗费硬盘空间 节省内存空间 
import os
with open('access.log','rt',encoding='utf-8') as f,\
    open('.access.log.swap','wt',encoding='utf-8') as f1:
    for line in f:
        f1.write(line.replace('xxx','egen'))
os.remove('access.log')
os.rename('.access.log.swap','access.log')

函数

定义

  • 无参函数
  • 有参函数
  • 空函数
    先定义 后调用
    定义函数
    ->申请内存空间保存函数代码
    ->将内存地址绑定函数名
    ->定义时内容不会报错,只有在调用时会报错(不会运行函数体 但是会检验函数体的语法格式)
    调用函数
    ->通过函数名找到函数内存地址
    ->加()触发函数体代码执行
# #先定义
# def func_name(param1,param2):
#     函数体
#     return 值
#形式一 无参函数 
def func():
    print('哈哈哈')
print(func)
func()
#应用场景:接收用户信息并 格式化打印
def interactive():
    name=input('name')
    pwd=input('pwd')
    print('名字:{},年龄:{}'.format(name,pwd))
#定义顺序不影响 调用顺序影响
def foo():
    bar()
    print('from foo')
def bar():
    print('from bar')
foo()
<function func at 0x000001ED80051E40>
哈哈哈
from bar
from foo
#形式二 有参函数
def func(x,y):
    print(x,y)
func(1,'aaa')
#应用场景求和
def add(x,y):
    res=x+y
    return res
print(add(20,20))
#形式三 空函数 ,函数体代码为pass
def func(x,y):
    pass
#应用场景 构思代码
1 aaa
40

调用

def add(x,y):
    res=x+y
    return res
#1.语句形式-只调用不操作
add(1,2)
#2.表达式形式
#赋值表达式
res=add(1,2)
#数学表达式
print(add(1,2)*10)
#函数调用当参数
print(add(add(1,2),3))
30
6

函数返回值

## 函数返回值
def func():
    return
res=func()#啥也不返回 none 函数体内没有return或者return后为空 = return None
print(res)
#返回1个值
def func(x,y):
    print('1111111')
    res=x+y
    return(res)#return后函数终止-是函数结束的标志
    print('22222222')
print(func(1,2))
#返回多个值 元组类型
def func():
    return 10,'aa',[1,23]
res=func()
print(res,type(res))
None
1111111
3
(10, 'aa', [1, 23]) <class 'tuple'>
posted @ 2025-03-13 22:02  anozzz  阅读(8)  评论(0)    收藏  举报