• 2019.8.8学习内容及随堂笔记


    文件的高级应用

    前面学了r:read(读) , w:write(写) ,a:append(追加)三种用法

    1. r+ 即可读有可写(尽量不要使用),r+ 是在后面追加
    with open('text.py','r+',encoding='utf-8') as f:
         data = f.read()
         #print(f.readable())
         f.write('x = 10')
         print(data)
    

    注:尽量不要用这种方法

    1. w+ 即可写有可读(注:w 会清空文件,w+更不要使用),清空文件后再写入
    with open('text.py','w+',encoding='utf-8') as f:
        data = f.readable()
        #print(data) (可读)
        f.write('333444')
        print(data)
    
    1. a+ 有追加的功能,a的指针在末尾,a+功能也没用
    with open('text.py','a+',encoding='utf-8') as f:
        # data = f.readable()
        # print(data)
        # f.write('111222')
        # print(data)
        # f.seek(3,0) # 指针在末尾,seek(x,0),x代表跳过它来读取后面的数据(按字节位移)
        # data = f.read()
        # print(data) 
        f.write('x=10')
        f.flush()
    

    文件的内置方法

    seek(寻找)(按字节位移)

    with open('text.py','rb') as f:
    #     #f.seek(1,0) # 1表示位移1位,0表示从头开始
    #     #print(f.read())
    #     #.seek(2,1) # 2表示位移2位,1表示从当前位置开始
    #     f.seek(0,2) # 0 表示位移0位,2表示从文件末开始,把指针移到文件末
    #     print(f.read())
    

    tell(告诉) ,按字节位移

    tell(告诉) #字节
    with open('text.py', 'r', encoding='utf-8') as f:
        f.seek(2, 0)
        print(f.tell())
    
    

    read(n) 只在r 模式下

    with open('text.py', 'r', encoding='utf-8') as f:
        # print(f.read(2))
    

    truncate

    with open('text.py', 'a', encoding='utf-8') as f:
        data = f.truncate(7)# 把2个字符后面的东西清空
        print(data)
    

    注:以上四个方法可以用,但是没有必要

    文件修改的两种方式

    首先,文件没有修改一说,只有覆盖一说

    import os
    # with open('text.py','r',encoding='utf-8') as fr,
    #     open('test.txt','w',encoding='utf-8') as fw:
    #     data = fr.read()
    #     data = data.replace('1444555','111222')
    #     fw. write(data)
    # os.remove('text.py')
    # os.rename('test.txt','text.py')
    
    import os
    with open('text.py','r',encoding='utf-8') as fr, 
        open('test.py','w',encoding='utf-8') as fw:
        for i in fr:
            i = i.replace('111222','chen handsome')
            fw.write(i)
    os.remove('text.py')
    os.rename('test.py','text.py')
    

    函数的定义

    函数更多是一种思想,他不是一种技术

    def register():
    """注册函数"""
        username = input('请输入你的用户名:')
        pwd = input('请输入你的密码:')
    
        with open('user_info.txt', 'a', encoding='utf8') as fa:
            fa.write(f'{username}:{pwd}|')
    register()
    
    def login():
        """登录函数"""
        username = input('请输入你的用户名:')
        pwd = input('请输入你的密码:')
    
        with open('user_info.txt', 'r', encoding='utf8') as fr:
            data = fr.read()
            user_list = data.split('|')
            print(user_list)
            user_info = f'{username}:{pwd}'
            if user_info in user_list:
                print('登录成功')
            else:
                print('傻逼,密码都忘了')
    login()
    

    函数的定义方式

    """
    def 函数名() #定义阶段(相当于造车轮阶段)
        """函数注释写在这里""" #函数相当于工具,注释相当于工具的说明书
        <代码块>
        
     #使用 #调用阶段(相当于开车阶段)
     函数名()
    
    """
    

    牢记:定义阶段不执行函数体代码,只检测语法错误***

    def func()
       """func函数的注释撒地方撒地方撒大方"""
        # todo:未来写一个函数
        pass
    print(login.())
    

    常用的内置方法:

    字符串:split

    列表:append

    字典:get

    集合:add

    read(), write()

    函数的三种定义方式

    参数:就是未知数,变量的意思

    无参函数 #工具可以单独使用

    def add():
        """无参函数"""
        x = input('num1')
        y = input('num2')
        print(int(x)+int(y))
    add()    
    

    有参函数

    def add(x,y):  # 这个不能单独使用,必须加上配件才能使用
       """有参函数"""
        print(int(x)+int(y))
    print(1)   
    x = input('num1')
    y = input('num2')
    add(x,y)
    

    空函数:定义了函数,啥都没有

    def func():   #只知道工具叫什么名字,但不知道如何造出这个工具
        pass
    

    函数的调用

    什么书函数的调用:就是函数名()即调用函数,会执行函数

    体代码,知道碰到return或者执行完函数体内所有代码后结束

    函数运行完所有代码,如果函数体不写return,则会返回None

    为什么调用函数:调用函数就是要使用函数的功能

    例如:

    def add(x,y):
        reeturn x + y
        res = add(10,20)
        print(res*10)
    

    函数的返回值

    什么是返回值:返回值就是内部代码经过一系列逻辑处理获得的结果

    def func():
        name = 'nick'
        return name
    name = func()
    print(name)
    
    def add(x,y):
        #逻辑
        print(x+y)
        return x + y  # 函数的返回值,终止函数(跳出函数)
    res = add(10,20)
    print(res)
    
    def add(x,y):
        # (x,y,x+y) # return可以返回任意数据类型
        return x,y,x+y  # 不加括号返回多个值时,默认用元组的形式返回
    
    x,y,z = add(1,2)
    print(x,y,z)
    

    函数的参数

    def add(num1,num2): #表示形参
        """有参函数"""
        print(int(num1)+int(num2))
    add(1,2) # 表示实参
    

    形参:定义阶段才有形参,形式参数,啥也没用,只是占个位置,具有描述意义

    实参:调用阶段才有实参,实际的参数,具有具体的值

    位置形参:就是一个一个的写形参

    def add(num1,num2): #形参
        """有参函数"""
        print(num1)
        print(num2)          # 这样一个一个写形参,就是位置形参
        print(int(num1)+int(num2))
     
    

    位置实参:一个一个的写过去,就是位置实参

    add(1,2) #实参
    

    注:两个位置形参,就必须得要两个位置实参对应,从左到右一一对应

    默认形参:不需要传参,可以使用默认值;如果传参就使用你传的值,默认形参必须放到位置形参后面

    def shopping(name='nick'): # 形参经常会引用同一个值
        goods_dict = {1:'特斯拉',2:'奔驰',3:'nick'}
        print(f'恭喜{name},得到{goods_dict[1]}一个')
    shopping()
    

    关键字实参:按照形参名给定具体的值,可以打破位置形参必须得一一对应规则

    def shopping(x,name = 'nick'):
        goods_dict = {1:'特斯拉',2:'奔驰',3:'nick'}
        print(f'恭喜{name},得到{goods_dict[x]}')
    shopping(1,name = 'kuiming')
    

    注:函数的参数尽量不要超过3个

    关键字形参:需要用的时候用,一般用位置形参+位置实参

  • 相关阅读:
    linux 还能这么来
    JS还能这么来
    FFmpeg常用命令
    golang gin框架默认打印日志写入到文件 (http请求打印写入到文件而不是控制台)
    社保、新农合介绍以及报销比例介绍
    Lightroom 快捷键集合
    golang map基础使用-初始化
    SOLID
    java dump
    Java 网络IO编程总结(BIO、NIO、AIO均含完整实例代码)
  • 原文地址:https://www.cnblogs.com/chmily/p/11348650.html
Copyright © 2020-2023  润新知