首页 > 技术文章 > python基础

xiao-qing 2019-03-05 14:36 原文

提取字典中的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函数

 

推荐阅读