美文网首页
Python 3.6 中的新增功能

Python 3.6 中的新增功能

作者: 虚心的锄头 | 来源:发表于2022-05-18 13:21 被阅读0次

    Python 3.6 中的新增功能--官网

    本文介绍了 Python 3.6 中与 3.5 相比的新功能。Python 3.6于2016年12月23日发布。有关完整的详细信息,请参阅更新日志

    新的语法功能:

    PEP 498:格式化字符串文本
    >>> name = "Fred"
    >>> f"He said his name is {name}."
    'He said his name is Fred.'
    >>> width = 10
    >>> precision = 4
    >>> value = decimal.Decimal("12.34567")
    >>> f"result: {value:{width}.{precision}}"  # nested fields
    'result:      12.35'
    
    PEP 526:变量注释的语法
    primes: List[int] = []
    
    captain: str  # Note: no initial value!
    
    class Starship:
        stats: Dict[str, int] = {}
    
    PEP 515:数字文本中的下划线
    >>> 1_000_000_000_000_000
    1000000000000000
    >>> 0x_FF_FF_FF_FF
    4294967295
    # 语言现在还支持以下选项,
    # 以指示对浮点表示类型和整数表示类型使用千位分隔符的下划线。
    # 对于整数表示类型, 、 和 , 
    # 将每 4 位插入一次下划线:`'_'``'d'``'b'``'o'``'x'``'X'`
    >>> '{:_}'.format(1000000)
    '1_000_000'
    >>> '{:_x}'.format(0xFFFFFFFF)
    'ffff_ffff'
    
    PEP 525: 异步发电机

    为 Python 3.5 引入了对本机协程和 /语法的支持。Python 3.5实现的一个显着限制是它不可能在同一个函数体中使用。在Python 3.6中,这个限制已经解除,使得定义异步生成器成为可能:async await await yield

    async def ticker(delay, to):
        """Yield numbers from 0 to *to* every *delay* seconds."""
        for i in range(to):
            yield i
            await asyncio.sleep(delay)
    
    PEP 530:异步推导
    # 增加了对在列表、集合、字典推导和生成器表达式中使用的支持:async for
    result = [i async for i in aiter() if i % 2]
    # 此外,表达式在各种推导式中都受支持:await
    result = [await fun() for fun in funcs if await condition()]
    
    新增模块
    secrets (机密)

    secrets 模块可用于生成高加密强度的随机数,适应管理密码、账户验证、安全凭据和相关机密数据管理的需要

    # 返回一个 [0, n) 范围之内的随机整数。
    >>> secrets.randbelow(100)
    15
    

    应当优先使用 secrets 来替代 random 模块中默认的伪随机数生成器,后者被设计用于建模和仿真,而不适用于安全和加密。

    警告请注意,random 模块中的伪随机生成器不应用于安全目的。在 Python 3.6+ 上使用 secrets,在 Python 3.5 及更早版本上使用 os.urandom()

    其他新特性

    新的 PYTHONMALLOC 环境变量允许开发者设置内存分配器,以及注册debug钩子等。
    asyncio模块更加稳定、高效,并且不再是临时模块,其中的API也都是稳定版的了。
    typing模块也有了一定改进,并且不再是临时模块。
    datetime.strftimedate.strftime 开始支持ISO 8601的时间标识符%G, %u, %V。
    hashlibssl模块开始支持OpenSSL1.1.0。
    hashlib模块开始支持新的hash算法,比如BLAKE2, SHA-3 和 SHAKE。
    Windows上的 filesystem 和 console 默认编码改为UTF-8。
    json模块中的 json.load() 和 json.loads() 函数开始支持 binary 类型输入。

    Python 3.6 中的新增功能--官网

    相关文章

      网友评论

          本文标题:Python 3.6 中的新增功能

          本文链接:https://www.haomeiwen.com/subject/mmhaurtx.html