• 文件操作与函数


    一、文件操作

    1、函数特性

    IO操作文件(可分为读、写)

    2、参数

    file:是指被操作的文件

    mode:通过什么方式操作文件(读还是写)

                 a:追加——在原有内容后再添加新的内容

                 w:写文件内容——文件内有内容时先清空原有的,再添加新写的

                  r:读取文件内容

    encoding:编码(utf-8,gdk)

    with:上下文,内部可以对文件关闭,避免操作文件忘记关闭

    2.1、写的操作

    不管是否有文件,即使没有文件,open内部会自动创建一个文件,然后把写的内容写进去

    2.2、读的操作

    1、文件存在,那么从文件中读取数据

    2、文件不存在,会报错:FileNotFoundError,如:[Errno 2] No such file or directory

    文件操作的三个步骤

    1、打开文件

    2、操作文件

    3、关闭文件(文件必须要关闭,否则会出现内存泄漏问题)

    3、实战操作

    3.1、单行内容写入

    f=open(file='login.txt',mode='w')
    f.write('new item')
    f.close()

    3.2、多行内容写入

    当内容中出现中文字符时,需要将编码带上,否则会出现乱码情况

    f=open(file='login.txt',mode='w',encoding='utf-8')
    data='''今
    天
    是
    阴
    天
    '''
    f.writelines(data)
    f.close()

    3.3、读取文件中的所有信息

    f=open('login.txt','r',encoding='utf-8')
    print(f.read())
    f.close()

    3.4、仅读取第一行的信息

    f=open('login.txt','r',encoding='utf-8')
    print(f.readline())
    f.close()

    3.5、按行读取文件中所有内容

    取消空格:strip()

    f=open(file="login.txt",mode='r',encoding='utf-8')
    for item in f.readlines():
        print(item.strip())
    f.close()

    3.6、with上下文

    as:别名,f=open('login.txt','r')

    with open('login.txt','r') as f:
       print(f.read())

    二、函数:def

    1、函数的特性

    所谓函数,就是把重复的代码单独的分离出来,放在⼀个公共的地方,以后可以⼀直的进行调用,这样就可以解决多次重复来编写

    2、定义

    代码: def 函数名称(函数的参数)

                函数表达式

    3、函数调用

    函数写完后,必须要经过调用才可以生效,如果不调用,不会生效

    调用函数的方式是:函数名称()

    4、函数的参数

    4.1、形式参数

    函数中的参数叫形式参数

    4.2、实际参数

    函数被调用的时候,给参数赋予的值叫实际参数

    4.3、默认参数

    在定义函数的时候给形式参数指定了参数的值

             默认参数只能放在非默认参数的后面,如果放在前面就会报错。

             在调用过程中,如果没有给该形式参数赋值,那么他的值默认就是自己定义的默认值;

             如果我们给形式参数定义了值,那么他的值就是我们新定义的值。

    4.4、动态参数

    定义一个函数时,当函数的形式参数个数不确定,数据类型不确定时就用动态参数

             如:def func(*a,**b),a和b为自定义的变量,一般a和b默认用args和kwargs,即def func(*args,**kwargs)

    *:代表的是元组的数据类型

    **:代表的是字典的数据类型

    5、参数调用注意事项

    1、函数再调用的时候,可以填写形式参数,也可以不填写

    2、要么都填写,要么都不填写

    3、函数再调用的时候,填写的实际参数要与形式参数的顺序,个数一致

    4、函数有形式参数的时候,调用函数必须填写实际参数

    6、实战操作

    6.1、函数定义与调用

    # 函数定义
    def func():
       print('hello world')
    # 函数调用
    func()

    6.2、登录的函数

    # 登录的函数
    def login(username,password):
       if username=='wp' and password=='12345':
          print('ok')
       else:
          print('no')
    # 调用函数时,形式参数为username,password,需要都填写
    login(username='wp',password='12345')
    # 调用函数时,形式参数都可以不写
    login('wp','12345')

    6.3、注册的函数

    # 注册的函数
    def registry(user=None):
       username=input('姓名:\t')
       password=input('密码:\t')
       code=username+","+password
       with open(file='login.txt',mode='a') as f:
          f.write(code)
    registry()

    6.4、输出文件中的用户名

    # 注册的函数
    def registry(user=None):
       username=input('姓名:\t')
       password=input('密码:\t')
       code=username+","+password
       with open(file='login.txt',mode='a') as f:
          f.write(code)
    registry()

    6.5、默认参数练习

    给密码赋予默认值为12345

    # 默认参数
    def login(username,password='12345'):
       if username=='wp' and password=='12345':
          print('ok')
       else:
          print('no')
    # 调用函数的时候,如果不指定形式参数password的值,它的默认值就是12345
    login(username='wp')
    # 如果指定形式参数password的值,指定的就是设置的值
    login(username='wp',password='wp12345')

    6.6、动态参数练习

    # 字典练习,**kwargs在函数中会把上传的参数转成一个字典
    def func(**kwargs):
        print(kwargs)
        print(type(kwargs))
    
    两种方式输出
    func(**{'name':'wp'},**{'password':'12345'})
    func(name='wp',password='12345')

    使用场景:当*args和**kwargs组合起来使用,理论上能接受任何形式和任意数量的参数,需要注意的是,*args必须在**kwargs之前

    def func(*args,**kwargs):
       print(args,kwargs)
    func(pay='微信',price=100)
    func(pay='支付宝',price=50)
    func(pay='招商银行',user='wp',price=30)
    func(1,2,a='9',b='8')
    
    list1=['微信','支付宝','招商银行','现金','信用卡']
    tuple1={'微信':'ok','支付宝':'no','招商银行':'ok','现金':500,'信用卡':'6.8'}
    # func(list1,tuple1),如果这样调用,后面的字典是空的,
    # 因此我们需要叫函数知道哪个变量是*args的参数,哪个是**kwargs的参数,
    # 正确上传参数写法:func(*list1,**tuple1)
    func(*list1,**tuple1)

     

  • 相关阅读:
    CSP-S2019 退役记
    近期考试反思
    有关近期情况的总结与反思
    我好难啊
    AFO
    智障错误集锦
    关于博客密码【asd
    关于csp-s的各种问题整理
    CSP-S 临别赠言( 二 )
    分层图最短路 乱搞分享
  • 原文地址:https://www.cnblogs.com/Kaylee/p/16073775.html
Copyright © 2020-2023  润新知