zoukankan      html  css  js  c++  java
  • Python学习笔记九_内置函数、json、匿名函数

    一、内置函数

    python自带的一些函数,直接拿过来能用的

    print(max(111,12))#取最大值
    print(min(12,23))#取最小值
    print(abs(-1))#取绝对值
    print(round(11.23454,2))#取几位小数
    print(sorted([1,23,45,66,33,2]))#排序,可用于字典排序
    dic = {1:2,3:4,5:6}
    print(sorted(dic.items()))#按照字典的key排序
    print(sorted(dic.items(),key = lambda  x:x[1]))#按照字典的value排序
    print(id(dic)) #看内存地址
    print(type(dic)) #看数据类型
    print() #打印
    input() #输入
    list()  #转list,字符串转list用.split
    set()# 转集合
    str()#转字符串,list转字符串用.join
    dict()#转字典
    int()#转int
    float()#转float类型
    len()#取长度
    print(dir('abc'))#查看字符串的方法,不用看有_xx_的
    print(dir({}))#打印传入对象的可调用方法
    print(all([1,2,3,4]))#判断可迭代的对象里面的值是否都为真
    print(any([0,1,2,3,4,]))#判断可迭代的对象里面的值是否有一个为真
    print(bin(10))#十进制转二进制,0b1010
    print(bin(10).replace('0b',''))#1010
    print(hex(111))#数字转成16进制
    print(oct(111))#把数字转换成8进制
    print(bool('s'))#把一个对象转换成布尔类型
    print(bytearray('abcd',encoding='utf-8'))#把字符串变成一个可修改的bytes,bytearray(b'abcd')
    print(chr(69))#打印数字对应的ascii
    print(ord('E'))#打印字符串对应的ascii码
    exec('def a():print("我是a")')#执行python代码
    print(eval('[]'))  # 执行python代码,只能执行简单的,定义数据类型和运算[],{}
    a = eval('1+2')
    print(a)
    print(filter(lambda x: x > 5, [12, 3, 12, 2, 1, 2, 35]))  # 把后面的迭代对象根据前面的方法筛选
    print(map(lambda x: x > 5, [1, 2, 3, 4, 5, 6]))
    print(frozenset({1, 2, 3, 3}))  # 定义一个不可修改的集合
    print(globals())  # 返回程序内所有的变量,返回的是一个字典
    print(locals())  # 返回局部变量
    print(hash('aaa'))  # 把一个字符串哈希成一个数字

    二、json处理

    json是一种所有语言中都通用的key-value数据结构的数据类型,很像python中的字典。

    json串是一个字符串。

    1、json格式

    需要注意,json中必须使用双引号

    {
        "car":{
            "color":"red",
            "num":1,
            "price":98.5
        },
        "ball":{
            "num":100,
            "price":1,
            "color":"white"
        }
    }

    2、读json文件:json串--->python字典

      (1) json.loads():把json串转换成字典

         json.loads()需要先读文件,()里是string

    import json
    fr = open('product.json',encoding='utf-8')
    res = fr.read()
    product_dic = json.loads(res) #把json串,变成python的字典数据类型
    print(type(product_dic)) #<class 'dict'>
    print(product_dic.get)#pycharm点不出get方法

      (2) json.load():从文件中读取json数据,然后转成字典

         json.load()不用再读文件,()里是file

    import json
    fr = open('product.json',encoding='utf-8')
    product_dic = json.load(fr) #传一个文件对象,它会帮你读文件,()里是file
    print(type(product_dic)) #<class 'dict'>
    print(product_dic)

    3、写json文件:python字典 ---> json串

      (1) json.dumps():把字典转成json串

         json.dumps()需要写文件,()里是string

    import json
    d = {
        'Amy':{
            'addr':'北京',
            'age':28
        }
    }
    fw = open('user_info.json','w',encoding='utf-8')
    dic2json = json.dumps(d,ensure_ascii=False,indent=4)#字典转成json,字典转成字符串
    # ensure_ascii=False显示中文,不再转为union code编码
    #indent=4缩进4
    fw.write(dic2json)

      (2) json.dump():把字典转换成的json串写到一个文件里面

         json.dump()不用单独写文件,()里是file

    import json
    d = {
        'Ben':{
            'addr':'北京',
            'age':28
        }
    }
    fw = open('user_info.json','w',encoding='utf-8')
    json.dump(d,fw,ensure_ascii=False,indent=4)#不用写文件,()里是file

    三、匿名函数

     如果函数只执行一次的话,可以定义一个匿名函数。匿名函数只能处理比较简单的处理逻辑,只能写简单的表达式,不能写循环、判断,比如三元运算符。

    匿名函数定义试用lambda关键字。

    s =lambda x,y:x+y#冒号前面的x,y是入参,冒号后面的是返回值
    print(s(1,9))#因为函数即变量,如果没有定一个变量把lambda存起来的话,它就不再内存里
    #没法执行,所以把它放到s这个变量里

    通过sorted及lambda对字典排序:

    d = {'a':8,'b':2,'c':3}#字典是无续的,直接对字典排序是不存在的
    print(d.items())#item将字典转为二维数组,list是有序的
    # dict_items([('c', 3), ('b', 2), ('a', 8)])
    res = sorted(d.items()) #根据key排序
    res1 = sorted(d.items(),key=lambda x:x[0])#根据key排序
    #sorted循环调用,按照d.items()循环,循环key第一次取到('c', 3)赋给key
    res2 = sorted(d.items(),key=lambda x:x[1],reverse=True)#根据value倒序排序
    print(res2)#[('a', 8), ('c', 3), ('b', 2)]
    for k,v in res2:
        print(k,v)
  • 相关阅读:
    面向对象进阶
    EasyDSS转码模块关于gRPC服务注册到ETCD的实现过程
    如何通过ETCD实现EasyDSS分布式负载均衡?ETCD部署方案
    EasyDSS_dash版本如何在新内核下实现rtsp源地址的分发?
    EasyDSS因为系统时间导致的闪退分析及处理
    EasyScreenLive推流组件推RTSP流到EasyDSS操作过程分享
    【解决方案】无人机+EasyDSS实现直播推流警务安防类行业应用
    EasyDSS转码服务负载均衡采用grpc balance回报找不到结构体问题排查及修复
    EasyDSS视频直播时直播间接口和实际接口为什么会存在差异?
    在线课堂EasyDSS_dash版本虚拟直播RTSP播放无视频流问题
  • 原文地址:https://www.cnblogs.com/dongrui624/p/8885151.html
Copyright © 2011-2022 走看看