python基础篇 11-json 函数
json:
import json d = {'name':'xiaohei','cars':[1,2,3],'house':(4,5,6), 'addr':'北京','age':18,'sex':'男','money':100,'msg':'ok'} #json就是一个字符串,只不过是所有语言都能解析这个字符串 # indent 支持缩进格式化,ensure_ascii = False 能支持中文 result = json.dumps(d,ensure_ascii=False,indent=4) #pyton的数据类型转json的 #(list、tuple、dict),其中 元组 dumps后 变为 list print(result) print(type(result)) json_str = ' {"name": "xiaohei", "cars": [1, 2, 3], "house": [4, 5, 6]} ' dict2 = json.loads(json_str) # json串 转为 python中字典 print(dict2) f= open('aa.txt') content = f.read() d = json.loads(content) # load 等同于 read + loads d = json.load(f) #帮你封装了处理文件的功能 json_str = json.dumps(d,indent=4,ensure_ascii=False) f.write(json_str) # dump 等同于 dumps + write json.dump(d,f,indent=4,ensure_ascii=False) #帮你封装了处理文件的功能 hzy = [1,2,3,4] with open('info2.json','w',encoding='utf-8') as fw: json.dump(hzy,fw,ensure_ascii=False,indent=4) # 例子 # 写例子 with open('info.txt','w',encoding='utf-8') as fw: json.dump(d,fw,indent=4,ensure_ascii=False) # 读例子 with open('info.txt',encoding='utf-8') as fw: d = json.load(fw) print(d) print(d.get('name')) print(d.get('money'))
函数:
1、位置参数、默认参数
#函数、方法 import string import datetime def hello(): #定义函数,提高代码的复用性 print('nihao') def baoshi(): print('当前时间',datetime.datetime.today()) def check_password(password):#校验密码是否合格,必传参数,位置参数 password_set = set(password) if password_set & set(string.digits) and password_set & set(string.ascii_lowercase) \ and password_set & set(string.ascii_uppercase): return True return False def write_file(file_name,content): with open(file_name,'w',encoding='utf-8') as fw: fw.write(content) def read_file(file_name): with open(file_name,encoding='utf-8') as fr: return fr.read() # 传参方式 关键字传参、位置传参 write_file(content='1234',file_name='a.txt') write_file('a.txt',content='absdfs') write_file('a.txt','12235236') #默认值参数 def op_file(file_name,content=None): print(content) if content: write_file(file_name,content) else: result = read_file(file_name) return result print( op_file('1.txt') ) op_file('1.txt','sdfdssgsdgsdg')
2、参数组、关键字参数
#必传参数(位置参数)、默认值参数 #可选参数(参数组)、关键字参数 import json def send(*args): # 其中args是保存的是 参数元组列表 重要 重要 重要 for p in args: print('发短信给xxx%s'%p) send() send(110) send(110,120,119) #可选参数,它不是必传的,不限制参数个数,它是把参数放到了一个 tuple(list)里面 #关键字参数,它不是必传的,不限制参数个数,它是把参数放到了一个字典里面, # 但是它传参的时候必须得用关键字的方式 或者 使用 **{'key':'value'} 即 kwargs 为{'key':'value'} def send_sms(**kwargs): # 其中kwargs保存的是 k:v字典形式的 参数 如{xx:xx}或者 **kwargs 为:xx=xx print(kwargs) send_sms() send_sms(xzh='晚上好') send_sms(lhh='新年好',fd='生日快乐',lyh='新婚幸福') send_sms(**{'xiaoming':'加油'}) def nb_func(name,age,country='China',sex='女',*args,**kwargs): #1、必填参数 #2、默认值参数 #3、参数组 #4、关键字参数 print(name) print(age) print(sex) print(country) print(args) print(kwargs) nb_func('xh',18,'abc','efg','hhh',name=1,b=2,c=3) nb_func('xh',18,'japan','nan','abc','efg','hhh','2335','23532')
传参例子:
# 可以位置参数传,也可以参数组传、也可以关键字传 l = ['xh',18,'nan'] d = {'name':'xh','age':18,'sex':'nan'} def hhh(name,age,sex): print(name) print(age) print(sex)
def hhh1(*args,**kwargs): print(args) print(kwargs) hhh(*l)# 'xh',18,'nan' hhh(**d)#name=xh,age=18,sex=nan
函数返回值、全局变量、局部变量
#返回值
def test(): print('hello') def test2(): return 1,2,3 #如果一个函数没有写返回值的话,返回的就是None #如果函数有多个返回值,那么返回的是一个元组 a,b,c = test2()
全局变量
#全局变量:一般定义在代码的最上面,大家都可以用的 类似公厕 全局变量会一直占用内存,整个代码运行完 才会释放 尽量少用 #局部变量:在函数里面定义的变量,都是局部变量 函数调用的时候 才会生成局部变量,才会占用内用,函数调用完 局部变量占用内存释放, file_name = 'a.txt' country = 'China' #重要 重要 重要 #list、dict、set不需要用global来声明了 #str、int、float、tuple、bool#需要的 def say(): print(file_name) word = 'Nihao' print(country) print(word) def zhucheng(): country = 'Japan' print(country) def update_file_name(): global file_name file_name = 'a.json' # 修改全局变量之前 需要先global声明 print(file_name) update_file_name() print(file_name) #例子1 money = 500 def test(consume): return money - consume def test1(money): return test(money) + money money = test1(money) print(money)
#例子2 def test(): global a a = 5 def test1(): c = a + 5 return c test() res = test1() print(res)
练习:判断小数
# 判断小数 def is_float(s): s = str(s) if s.count('.') == 1: left,right = s.split('.') if left.isdigit() and right.isdigit(): return True if left: if left[0] == '-' and left[1:].isdigit() and right.isdigit(): return True # return False #非空即真 返回None 也是false 这行可以省略