Python文件操作与函数铺垫

  1. 文件二进制读操作

1. r模式

read()里面的数字代表的是一个字符

2. b模式

read()里面的数字代表的是一个字节

with open('a.txt', 'rb') as f:
    print(f.read(3).decode('utf-8'))

2.文件指针的移动

seek(offset,whence)

f.seek总共有3种模式

1. offset参数

偏移量,移动的位置

如果是整数,从左往右读取

如果是负数,从右往左读取

2. whence参数

0: 默认的模式,该模式代表指针移动的字节数是以文件开头为参照的

1: 该模式代表指针移动的字节数是以当前所在的位置为参照的

2: 该模式代表指针移动的字节数是以文件末尾的位置为参照的

with open('a.txt', 'rb') as f:
    print(f.read(12).decode('utf-8'))
    # f.seek(3,0)  # 控制指针的移动
    # f.seek(3,1)  # 控制指针的移动
    f.seek(-3,1)  # 控制指针的移动
    print(f.read().decode('utf-8'))

3.文件的修改

方式一:

# 1. 读取b.txt文件数据
with open('b.txt', 'r', encoding='utf-8') as f:
    data = f.read()
print(data)  # kevin kevin kevin kevin say hello world
new_data = data.replace('kevin', 'jack')

# 2. 把新的数据再次写入文件
with open('b.txt', 'w', encoding='utf-8') as  f1:
    f1.write(new_data)

方式二:

import os

with open('a.txt','rt',encoding='utf-8') as read_f:
    with open('b.txt',mode='wt',encoding='utf-8') as wrife_f:
        for line in read_f:
            wrife_f.write(line.replace('SB','kevin'))

os.remove('a.txt')  # 删除源文件
os.rename('b.txt','a.txt')

4.函数铺垫:

函数简介:

类似于工具,提前准备好,方便后续使用

1. 我们现在写的代码冗余性比较强

2. 我们现在写的代码兼容性不强

3. 模仿len的功能实现原理

4. 我们自己写的这个函数没有返回值(就是函数执行之后,没有返回结果)

l = [1, 2, 3, 4, 5, 6,7,8,9,1,2,]
# print(len(l))  # len不能用了

def my_len():
    n = 0
    for i in l :
        n+=1
    print(n)
print(my_len())

5.函数的语法结构

1. def 定义或者说声明一个函数,不能省略

2. ()函数名(不能省略)

就相当于是变量名,命名遵循变量的命名规范,见名知意

3. 参数(可有可无)

函数的精髓

什么是函数:在使用函数之前要满足的一定条件

4. 函数体代码注释(可有可无,推荐有)

主要写一些函数功能的介绍,和一些参数的解释

5. 函数体代码(核心)

6. 返回值(可有可无)

return

def my_len(参数1, 参数2):
    '''求列表的长度'''
    print(123) # 函数体代码
    return 'hello' # 返回值

6.函数的定义与调用(核心)

函数一定是两个阶段:定义,调用

#####################必须掌握###########################################
1. 函数必须先定义,后调用
2. 函数在定义阶段,如果有参数,调用阶段也需要给对应的参数
3. 函数在定义阶段只检测语法是否正确,不执行具体的代码功能
4. 函数在调用阶段会执行具体的函数体代码
5. 如何调用函数?# 函数名()
#####################必须掌握###########################################

函数的底层原理:

1. 申请一块内存空间,存储函数体代码

2. 把函数体代码绑定给函数名

3. 通过调用函数(函数名())来执行函数体代码

7.函数的分类

1. 内置函数

在python解释器中提前存在的,我们可以直接使用

eg:len, print,之前学习的数据类型的内置方法都是内置函数

2. 自定义函数

我们自己写的函数

2.1. 无参函数:没有参数的函数

2.2. 有参函数:带参数的函数

2.3. 空函数:啥都没有

  #1.无参函数
# def my_len():
#     print(123)
# my_len()

# 2. 有参函数
def my_len(a,b):
    print('hello')
    print(a,b)
# my_len(1,2)
my_len('a','b')

# 3. 空函数
def my_func():
    # 1. 注册
    pass
    ...

def login():
    # 登录功能
    pass

def chongqian():
    # 这里是充值的逻辑
    pass

8.函数的返回值

1. 当函数没有返回值的时候,没有return的时候,返回的是None

2. 当函数中只要return关键字的时候,返回的结果仍然是None

3. 当return后有数据的时候,写什么就返回什么

4. 当return后面跟多个数据的时候,会组织成元组形式返回

5. 如果你想返回多个值得时候,最后使用容器类型包一下

6. 在函数中,只要遇到return关键字,代码立刻终止执行,一个函数最多只有有一个return关键字

7. return 只能出现在函数中。if else中绝对不能出现

def my_func1():
    print('helloworld')
    # return 123, 345, 567  # (123, 345, 567)
    # return [1, 2, 3]
    # return {'username':'kevin','age':20}
    return '123'


# 返回值:函数执行完毕之后,返回的结果
res = my_func1()  # 把函数的执行结果赋值给res变量,结果就是None
print(res)  # None
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值