python基础
提取字典中的key和value
m1 = 0
m2 = 0
m3 = 0
result = {408:1,399:2,389,6}
for key,items in result.items():
if key = 408:
m1 += items
elif key = 399:
m2 += items
elif key = 389:
m3 += items
从字典里面提取某一个key的值
result = {"code":200,"message":"操作成功","data":{"luckList":[{"gid":387,"giftName":"咖啡","giftUrl":"http://out8i00tg.bkt.clouddn.com/kafei.png","number":2,"run":false},{"gid":408,"giftName":"COOL","giftUrl":"http://out8i00tg.bkt.clouddn.com/cool.png","number":3,"run":false}]}
从lucklist中提取出gid的值和number的值
a = result.json()['data']['lucklist']
for i in a:#i是个字典
dict[i["gid"]]=i["number"]
json和dict的区别
json中的字符串强制使用双引号,dict中可以使用单引号
(1)json.dumps()函数是将一个Python数据类型列表进行json格式的编码(可以这么理解,json.dumps()函数是将字典转化为字符串)
(2)json.loads()函数是将json格式数据转换为字典(可以这么理解,json.loads()函数是将字符串转化为字典)
全局变量和局部变量
name = "产品经理" def aa(): name = "开发" print(name)##name=开发 print(name) ##name==产品经理 name = "产品经理" def aa(): global name name = "开发" print(name)##name=开发 print(name) ##name==开发 错误示例:( name = "产品经理" def aa(): name = "开发" global name print(name)##name=开发 print(name) ##name==开发 ) name = ["产品经理"] def aa(): name.append = "小王" print(name)##name=["产品经理","小王"] print(name) ##name==["产品经理","小王"]
- 在函数的内部使用一个变量
- 遵循一个规则: 先在函数内部找 找到直接使用 如果找不到到函数外部找 如果还是找不到 就报错(由内到外)
- 函数内部对全局变量的值进行修改 global
- 如果函数的内容无global关键字,优先读取局部变量,如果局部变量没有,只能读取全局变量,无法对全局变量进行赋值;如果有global,可以进行直接读取修改赋值
global ---全局变量 nonlocal----上一级的变量
递归
在 函数内部,可以调用其他函数。如果一个函数在内部调用自身
def calc(n): print(n) if int(n/2)==0 return n return calc(int(n/2))
匿名函数
lambda x : x+1
1 匿名的目的就是要没有名字,给匿名函数赋给一个名字是没有意义的
2 匿名函数的参数规则、作用域关系与有名函数是一样的
3 匿名函数的函数体通常应该是 一个表达式,该表达式必须要有一个返回值
4 匿名函数后面不能有复杂的逻辑 例如:发= lambda x:x+1:if x>0---错误
def b(x,c,d,e): a = lambda x: (x + 10) print(a(x)) b = lambda c,d,e:(c+1,d+1,e+1) print(b(c,d,e)) if __name__ == '__main__': # foo(1,2,3,4,5) # foo(1,2,**{"a":1,"b":2}) b(1,2,3,4)
函数式编程
函数式编程的特点
1、不可变:不用变量保存状态,不修改变量
2、第一类对象:函数即变量
函数名可以当做参数传递
返回值可以是函数名
11高阶函数
满足两个特性任意一个极为高阶函数
1.函数的传入参数是一个函数名
2.函数的返回值是一个函数名
map函数
reduce函数
filter函数