2月24日课后总结

2/24课后总结

练习题

def copy(address):
    """
        获取文件的二进制码
    :param address: 传入文件的地址
    :return: 解码后的二进制码
    """
    with open(address, 'rb') as f:
        return f.read()


def paste(address):
    """
        根据获取到的二进制码粘贴成对应的文件
    :param address: 传出的文件的地址
    :return: 无
    """
    copy_address = input('请输入复制的文件地址>>>')
    with open(address, 'wb') as f:
        f.write(copy(copy_address))


address = input('请输入粘贴的文件地址>>>')
paste(address)

文件

二进制读操作

with open(address, 'rb') as f:
       return f.read(3).decode('utf-8')
    """
    	r模式下read()里数字是字符b模式是字节
    """

移动指针

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)  # 从文件当前位置开始向左移动三个字节
     f.seek(-3,2)  # 从文件最后开始向左移动三个字节
    print(f.read().decode('utf-8'))

修改

# 方式一:
# 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')

函数

l = [1, 2, 3, 4, 5, 6]
不使用len(i),求列长

count = 0
for i in l:
        count+=1
    print(count)

count = 0
def len1(x):
    for i in x:
        count+=1
    return count
"""
	平时写代码,就如同上面一样,一段代码只能给一个列表或者一个对象使用,如果需要球的不止一个列表呢
	l1 = [1, 2, 3, 4, 5, 6]
	l2 = [1, 2, 3, 4, 5, 6]
	l3 = [1, 2, 3, 4, 5, 6]
	这时候就需要函数了
	print(len1(l1))
	print(len1(l2))
	print(len1(l3))
	方便快捷,可多次使用代码行数少
"""

语法结构

def len1(x):
    """
        此函数可以求出给定的值的长度
    :param x: 需要求长度值如列表字符串字典等
    :return: 返回所求出的长度
    """
    count = 0
    for i in x:
        count += 1
    return count
"""
	def:声明一个函数,不可省略
	len1(): 函数名,不可省略,括号也不可
	x:自定义参量,可以省略
	""""""在此之间的是函数注释一般都是在函数体之前,可以省略,但是不推荐方便他人也方便自己再次查看
	count = 0
    for i in x:
        count += 1   函数体,函数的核心部分,一个函数可以做什么事都是由此决定
    return count   :函数的返回值,可以省略,不写或只写return默认返回None
"""

定义与调用

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

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

函数的底层原理:
   	1. 申请一块内存空间,存储函数体代码
    2. 把函数体代码绑定给函数名
    3. 通过调用函数(函数名())来执行函数体代码

分类

1. 内置函数
  # 如print,input 等一系列python解释器中已经存在可以直接调用的函数
2. 无参函数
def add():  # add()中啥也没得
    y = 1+1
    return y
print(add())
3. 有参函数
def add(a,b):  # add()中有参数,多少个都可以用逗号隔开
    y = a+b
    return y
print(add(1,2))
3.3 有参函数特殊型
def add(a=1,b=2):  # 参数可以在定义时就赋一个默认值
    y = a+b
    return y
print(add())  # 如果定义时是带默认值的参数调用时可以不传参
print(add(b=3,a=5))  # 调用传参时如果加了等号可以不管形参的顺序先后
4. 空函数
def add():
    pass  # 什么功能都没得

返回值

def x():
    return '123'
print(type(x()))  # <class 'str'>
def x1():
    return [1, 2, 3]
print(type(x1()))  # <class 'list'>
def x3():
    return 123
print(type(x3()))  # <class 'int'>
"""
	返回值就是函数执行完毕后返回的结果,可以返回任何类型的结果
	不写return或者只写个return关键字都是默认返回None
	return可以返回多个值要用逗号隔开,默认是元组,也可以使用容器类型包装
	函数执行中遇到return直接结束函数的运行不执行return之后的代码
	return只能出现在函数中
"""
posted @ 2023-02-24 16:26  橘子熊何妨  阅读(22)  评论(0)    收藏  举报