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='汉中')#报错,必填参数没填