文件的操作模式、文件内指针的移动、文件的修改、函数的简介、函数的语法结构、函数的定义与调用、函数的分类、函数的返回值

1 文件的操作模式
2 文件内指针的移动
3 文件的修改
4 函数的简介
5 函数的语法结构
6 函数的定义与调用
7 函数的分类
8 函数的返回值

1 文件的操作模式

# 文件的操作模式
'''
    1. 如果是t模式,read里面写的数字代表的是读取的字符个数
    2. 如果是b模式,read里面写的数字代表的是读取的字节个数
    3. 一个字节代表一个英文字符
    4. 一个中文字符使用三个字节保存
'''
with open('a.txt', 'r', encoding='utf8') as f:
    print(f.read(3))  # 你好啊

with open('a.txt', 'rb') as f1:
    print(f1.read(10).decode('utf8'))  # 你好啊 

2 文件内指针的移动

"""
    指针有三种模式:
    f.seek(3, 0)
    f.seek(offset, whence)
    
    whence:
        0:默认的是,该模式代表指针移动的字节数是以文件开头为参照的(支持tb模式)
        1:该模式代表指针移动的字节数是以当前所在的位置为参照的(只用于字节模式)
        2:该模式代表指针移动的字节数是以文件末尾的位置为参照的(只用于字节模式)
"""
with open('a.txt', 'rb') as f:
    # f.seek(3, 0)
    # print(f.read())  # b'\xe5\xa5\xbd\xe5\x95\x8a hello world'
    f.seek(-3, 2)  # 负数代表的是往相反的方向移动
    print(f.tell())  # 18  tell()表示光标所在位置
    print(f.read())  # b'rld'

3 文件的修改

# 方式一:
# 实现思路:将文件内容发一次性全部读入内存,然后在内存中修改完毕后再覆盖写回原文件
# 优点: 在文件修改过程中同一份数据只有一份
# 缺点: 会过多地占用内存
with open('a.txt', mode='rt', encoding='utf-8') as f:
    data = f.read()

with open('a.txt', mode='wt', encoding='utf-8') as f:
    f.write(data.replace('kevin', 'SB'))

# 方式二:
# 实现思路:以读的方式打开原文件,以写的方式打开一个临时文件,一行行读取原文件内容,修改完后写入临时文件...,删掉原文件,将临时文件重命名原文件名
# 优点: 不会占用过多的内存
# 缺点: 在文件修改过程中同一份数据存了两份
import os

with open('a.txt', mode='rt', encoding='utf-8') as read_f, \
        open('.db.txt.swap', 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('.a.txt.swap', 'db.txt')

4 函数的简介

"""
    1.我们现在写的代码不够简洁,也就是说写了很多重复的代码
    2.我们现在写的代码兼容性不强
    函数简介:
        函数就是类似于一个工具(功能)
        函数就是提前定义好的一个功能,以后想用,就调用函数使用
"""

# 自定义一个函数
def my_len(a, b):
    print(123)
    return

# 调用函数
my_len(1, 2)

5 函数的语法结构

  """  
    1. def 定义函数的关键字
    2. my_len
        函数名,命名遵循变量的命名规则
    3. def my_len(参数1,参数2):
    参数是可有可无的
    参数就是在执行函数的时候要提前满足的条件
    4. 函数注释
        可有可无,一般情况函数注释是用来介绍函数的功能、参数代表的意思,以及返回值的情况等信息
    5. 函数体
        函数体也是可有可无的,但是,没有函数体的函数没有意义的,pass
    6. 函数的返回值
        关键字:return
        返回值也是可有可无的,一个函数只能有一个return返回值      
"""


def my_len(a, b):
    print(123)
    return

6 函数的定义与调用

#########################################################################
"""
    1. 函数必须先定义后调用
    2. 函数在定义阶段只检测语法错误,不执行函数体代码
    3. 只有在函数调用阶段,才会执行函数体代码
    4. 如何调用函数
    	函数名加括号,如果有参数,在调用的时候也要把参数一块传过去
"""
#########################################################################

函数在定义阶段和调用阶段的底层原理:
1. 在内存空间中申请一块地址,来存储函数体代码
2. 把函数体代码所在的空间地址绑定给函数名
3. 通过调用函数来执行函数体代码

7 函数的分类

"""
    1.内置函数:python解释器自带的函数,可以直接拿来使用
        eg:len、print、之前学的数据类型的内置方法
        '''本质上方法也是函数,为什么叫法不一样呢,函数单独使用就叫函数,
          面向对象,把函数写在面向对象里面就叫方法'''
    
    2.自定义函数
      2.1无参函数
        # 没有参数的函数,括号里面没有参数的函数
        def index():
            pass
    
    
    2.2有参函数
        # 有参数的函数就叫有参函数,括号里面有参的函数
        def index(a, b):
            print(a + b)
        index(1, 2)
    2.3空函数
        # 就是没有函数体的代码,空函数可以帮助我们梳理代码思路
"""

8 函数的返回值

"""
1. 函数内如果没有return关键字,那么,函数的返回结果就是None
2. 函数内如果只有return关键字,那么,函数的返回结果仍然是None
3. 函数内有了return关键字,return后面写什么东西就返回什么东西,谁调用,返回结果就给谁
4. 函数内遇到return关键字就直接返回结构,或者叫函数终止运行
5. 一个函数内只能有一个return结果
6. return后面也可以返回多个值,如果使用逗号隔开,那就以元组的形式返回,
	也可以直接返回列表、字典等类型
"""

代码如下:
def index(a, b):
    print('hello world')
    if a > b:
        return '你好'
    else:
        return '滚'

    # return 1, 2, 3, 4


result = index(1, 3)
print(result)

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值