zoukankan      html  css  js  c++  java
  • Python3新特性总结 持续更新

    一、Python3.6新特性

    1、格式化字符串:f-string

    f-string(formatted string literals):格式化字符串常量,是Python3.6新引入的一种字符串格式化方法,使格式化字符串的操作更加简便。
    新的格式化字符串方式,即在普通字符串前添加 f 或 F 前缀,其效果类似于str.format()

    1. 语法
    f'xxx' 或 F'xxx'  且以大括号 {} 表明被替换的字段,{}里面可以是字符串或者表达式
    
    
    2. 简单替换字符串:{'字符串'}
    name = '小白'
    msg = f'我叫{name},今年{18}岁,性别{"男"}'
    print(msg)  # 我叫小白,今年18岁,性别男
    注意:若f使用的是单引号,那么里面的{}若是字符串则应该用双引号,反之一样
    
    
    3. 计算表达式:{表达式}
    ret = f"1 add 2 is {1+2}"
    print(ret)  # 1 add 2 is 3
    
    
    4. lambda表达式:{(lambda表达式) (参数)}
    注意:
    lambda表达式的 : 会被f-string误认为是表达式与格式描述符之间的分隔符,
    为避免歧义,需要将lambda表达式置于括号 () 内:
    
    func = f"my_add result:{(lambda x,y:x+y) (1,2)}"
    print(func)  # my_add result:3
    
    若不加括号则报错:
    func = f"my_add result:{lambda x,y:x+y (1,2)}"
    print(func)
    
    
      File "<fstring>", line 1
        (lambda x,y)
                   ^
    SyntaxError: unexpected EOF while parsing
    
    
    5. f-string用法很强大,这里只是写出了一些常用的方法,感兴趣可以自己去研究其他用法

    2、变量声明语法

    语法:
    参数: 类型[子元素类型...]

    from typing import List, Dict, Set, AnyStr
    """
    注意:
        实例化列表和字典的是内置参数,小写的 list, dict, set
        变量声明的列表和字典的是typing导入的参数,大写的 List, Dict, Set
    """
    
    my_list_1: List  # 声明了一个列表
    my_list_2: List[int] = [1, 2, 3]  # 声明了一个列表且list里面的元素为 int 并初始化
    myDict: Dict[str, int] = {}  # 声明了一个字典,key为字符串,值为int 并初始化
    myStr: AnyStr  # 声明此参数为字符串
    
    my_list_1 = []
    my_list_1.append(1)  # 元素为int,正常,无高亮提示
    my_list_1.append("a")  # 元素为字符串,正常,无高亮提示
    print(my_list_1)
    
    my_list_2.append(4)  # 元素为int,正常插入数据
    my_list_2.append("a")  # 元素为字符串,跟声明不一致,会高亮提示,但是一样能正常插入数据
    print(my_list_2)
    
    myDict["x"] = 123  # key为字符串,值为int 正常,无高亮提示
    myDict[111] = "aa"  # key为int,值为字符串 跟声明不一致,会高亮提示,但是一样能正常插入数据
    print(myDict)
    
    myStr = "hello world"  # 元素为字符串,正常,无高亮提示
    print(myStr)

    3、数字的下划线写法

    # 允许在数字中使用下划线,以提高多位数字的可读性
    a = 9_999_000_000_000_000  # 9999000000000000
    b = 0x_BB_CC_FF_FF  # 3150774271
    
    # 数字字符串格式化也支持 _
    c = '{:_}'.format(9990000)  # 9_990_000
    d = '{:_}'.format(0xBBCCFFFF)  # 3_150_774_271
    e = '{:_x}'.format(0xBBCCFFFF)  # bbcc_ffff

    4、异步生成器

    在Python3.5中,引入了新的语法 async 和 await 来实现协同程序。
    但是不能在同一个函数体内同时使用 yield 和 await。
    Python3.6中,则没有这个限制,允许定义异步生成器。

    允许在列表list、集合set 和字典dict 解析器中使用 async 或 await 语法。

    待我研究下async 和 await...

    5、新增加模块

    标准库(The Standard Library)中增加了一个新的模块:secrets
    该模块用来生成一些安全性更高的随机数,用于管理passwords, account authentication, security tokens, 以及related secrets等数据。

    更多新特性请查看官网:https://docs.python.org/3.6/whatsnew/3.6.html

    二、Python3.7新特性

    三、Python3.8新特性

    1、海象表达式

    在Python3.8中新添加了赋值表达式 := ,它被亲切地称为“海象操作员”,因为它与海象的眼睛和象牙相似。
    官方推荐使用“海象表达式”来降低代码的复杂性和可读性。

    我的理解是,海象表达式能够在赋值的同时使用这个参数,简化了代码。

    a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    # 如果我们想要判断一个列表的长度是否大于10, 如果大于10我们就提示并打印列表长度,一般我们可以这么写:
    if len(a) > 10:
        print("列表过长,一共有{}个元素".format(len(a)))
    
    # 在这里我们调用了两个 len() 函数,有人肯定会说,我先定义变量,也可以只调用一次啊,那么我们换个写法:
    n1 = len(a)
    if n1 > 10:
        print("列表过长,一共有{}个元素".format(n1))
    
    # 这么说也对,只调用一次len,但是增加了一行代码,在程序员的角度来说,代码越简洁越好
    # 那么可以试试海象表达式
    if (n := len(a)) > 10:
        print(f"列表过长,一共有{n}个元素")
    # 在比较 len(a) 与 10 的同时,将 len(a) 的值赋给 n
    # 在下面打印的时候使用 n 就可以了,这样即避免调用两次 len(),代码量也减少。
    
    
    # 比如在实际中我们可以这样简化代码:
    # 查找long>10的长度
    peoples = [
        {"name": "张三", "age": 17, "long": 7},
        {"name": "李四", "age": 18, "long": 15},
        {"name": "王五", "age": 50, "long": 18},
    ]
    
    # 平常的写法
    result = []
    for person in peoples:
        long = person["long"]
        if long > 10:
            result.append(long)
    
    
    # 海象表达式
    result = [long for person in peoples if (long := person["long"]) > 10]
  • 相关阅读:
    【解决】Word中插入图片后变模糊(失真)
    【解决】Windows文件夹没有边框
    【解决】电脑字体突然显示不正常
    NLP与深度学习(六)BERT模型的使用
    NLP与深度学习(五)BERT预训练模型
    NLP与深度学习(四)Transformer模型
    NLP与深度学习(三)Seq2Seq模型与Attention机制
    用ByteArrayOutputStream解决IO流乱码问题
    在vue3中使用vue-property-decorator报错
    python之批量打印网页为pdf文件(二)
  • 原文地址:https://www.cnblogs.com/Zzbj/p/15545805.html
Copyright © 2011-2022 走看看