zoukankan      html  css  js  c++  java
  • Python学习(十五)json串使用,不固定参数,关键词参数

    1、json串

     json串是一字符串

    import json
    f=open('product.json',encoding='utf-8') #读json串文件
    res=f.read()
    print(res)

    2、json.loads使用

    import json
    f=open('product.json',encoding='utf-8')
    res=f.read()
    product_dic=json.loads(res) #把json串,变成python的数据类型(字典)
    print(type(product_dic))
    print(product_dic)

    输出的类型是字典类型

    3、json.load使用

    import json
    
    f=open('product.json',encoding='utf-8')
    product_dic=json.load(f)#用load就不用先读文件一次,就可以转成Python的数据类型
    print(type(product_dic))
    print(product_dic)

    与loads相比,load方法可以不用先读一次文件,再进行转换,可以直接转换

    4、json.dumps使用

    将字典转换为json字符串,间隔4,写入文件中

    d={
        'zll':{
            'addr':'北京',
            'age':28
        },
        'ljj':{
            'addr':'北京',
            'age':38
        }
    }
    fw=open('userinfo.json','w',encoding='utf-8')
    dic_json=json.dumps(d,ensure_ascii=False,indent=4)#字典转成json字符串
    fw.write(dic_json)

    5、json.dump使用

    d={
        'zll':{
            'addr':'北京',
            'age':28
        },
        'ljj':{
            'addr':'北京',
            'age':38
        }
    }
    fw=open('userinfo.json','w',encoding='utf-8')
    json.dump(d,fw,ensure_ascii=False,indent=2)#用dump就可以直接写

    6、json串使用

    def op_data(filename,dic=None):
        if dic:
            with open(filename,'w',encoding='utf-8')as fw:
                json.dump(dic,fw,ensure_ascii=False,indent=4)
        else:
            with open(filename, 'r', encoding='utf-8')as fr:
               return json.load(fr)
    
    filename='userinfo.json'
    all_users=op_data(filename)
    print(all_users)

    如果dic没数据就将文件中的json串变为字典并返回;如果dic有数据就将dic转换为json格式并写入文件。
    该函数使用如下:

    def op_data(filename,dic=None):
        if dic:
            with open(filename,'w',encoding='utf-8')as fw:
                json.dump(dic,fw,ensure_ascii=False,indent=4)
        else:
            with open(filename, 'r', encoding='utf-8')as fr:
               return json.load(fr)
    filename='userinfo.json'
    all_users=op_data(filename)
    
    
    for i in range(3):
        choice=input('输入 1,注册,2 删除')
        if choice=='1':
            username=input('账户')
            pwd=input('密码')
            if username not in all_users:
                all_users[username]=pwd
                op_data(filename,all_users) #使用函数
        elif choice=='2':
                username=input('账户')
                all_users.pop(username)
                op_data(filename,all_users)#使用函数

    输入1则进行注册,注册时输入账号密码,并将账号密码存进字典,使用函数,将该字典写入文件;输入2则进行删除,输入账号进行删除,将删除后的字典写入文件

    7、函数不固定参数

    函数不固定参数,是非必填参数,不限制参数个数,结果是放到元组里面

    def syz(*args):
        print(args)
    syz()
    syz('liujia ','dewe',324)
    syz('2e','2asd')

    以上三个调用函数都可以成功,并且打印出来的内容是放在元组里面的

    但是下面这段代码,其实在函数中已经规定了要有三个参数,所以调用函数输入参数不是3个就会报错了

    def syz(*args):
       username=args[0]
       pwd=args[1]
       age=args[2]
       print(args)
    syz()  #报错
    syz('liujia ','dewe',324)
    syz('2e','2asd')#报错

    8、关键词参数

    关键词参数是非必填参数,不限制参数个数,传参需要按照一定格式,结果放在字典里

    def syz2(**kwargs):
        print(kwargs)
    syz2()
    syz2(name='liujia',age=22)
    syz2(name='liujia',age=12,addr='成都',home='汉中')

    传参要按照key-value形式传,以上三种调用函数方式都可以,打印出来是字典格式

    以下这种调用会报错,因为传参的格式不对

    def syz2(**kwargs):
        print(kwargs)
    syz2('liujia')

    9、必填参数与关键词参数同时使用

    def syz2(time,**kwargs):
        print(kwargs)
    syz2(name='liujia',age=22,time='asd') 
    syz2('liujia') 

    time是必填参数,所以调用函数时,必须要传参,以上两种方式都可以

    以下几种方式就会报错

    def syz2(time,**kwargs):
        print(kwargs)
    syz2()#报错,必填参数没填
    syz2(name='liujia',age=12,addr='成都',home='汉中')#报错,必填参数没填

     

  • 相关阅读:
    IIS7中的几种身份鉴别方式(一)Basic身份验证
    IIS7中的几种身份鉴别方式(二)集成身份验证
    java集合
    SharePoint 2010中welcome page的设置细节
    SharePoint中使用Linq出现未将对象引用到实例化的解决方法
    SharePoint 2010中关于An error was encountered while retrieving the user profile的处理方式记录
    The Need for an Architectural Body of Knowledge
    The Softer Side of the Architect
    Event Receivers 学习小结
    使用SmtpClient发送带图片的邮件的代码实现
  • 原文地址:https://www.cnblogs.com/emilyliu/p/8884185.html
Copyright © 2011-2022 走看看