Python3.6正式版新特性预览


Posted in Python onDecember 15, 2016

按照Python官网上的计划,Python3.6正式版期望在2016-12-16号发布,也就是这周五。从去年的5月份开始,Python3.6版本就已经动手开发了,期间也断断续续的发布了4个Alpha版,4个Beta版,以及一个Candidate版本。

作为一个Python爱好者,很期待新版本的发布,也希望能第一时间尝试一下新特性。本文就根据Python官网文章What's New In Python 3.6,简单介绍下Python3.6中的一些新特性。

如果你想尝试Python3.6,又不想破坏本机的Python环境,建议使用Docker。如果不会使用Docker,可以看下这里  https://3water.com/article/94198.htm

新的语法特性

1、格式化字符串(Formatted string literals)

即在普通字符串前添加 f 或 F 前缀,其效果类似于str.format()。比如

name = "Fred"
print(f"He said his name is {name}.") # 'He said his name is Fred.'

其效果相当于:

print("He said his name is {name}.".format(**locals()))

此外,此特性还支持嵌套字段,比如:

width = 10
precision = 4
value = decimal.Decimal("12.34567")
print(f"result: {value:{width}.{precision}}") #'result:   12.35'

2、变量声明语法(variable annotations)

即从Python3.5开始就有的Typehints。在Python3.5中,是这么使用的:

from typing import List

def test(a: List[int], b: int) -> int:
  return a[0] + b

print(test([3, 1], 2))

这里的语法检查只在编辑器(比如Pycharm)中产生,在实际的使用中,并不进行严格检查。

在Python3.6中,引入了新的语法:

from typing import List, Dict

primes: List[int] = []
captain: str  # 此时没有初始值

class Starship:
  stats: Dict[str, int] = {}

3、数字的下划线写法(Underscores in Numeric Literals)

即允许在数字中使用下划线,以提高多位数字的可读性。

a = 1_000_000_000_000_000    # 1000000000000000
b = 0x_FF_FF_FF_FF       # 4294967295

除此之外,“字符串格式化”也支持“_”选项,以打印出更易读的数字字符串:

'{:_}'.format(1000000)     # '1_000_000'
'{:_x}'.format(0xFFFFFFFF)   # 'ffff_ffff'

4、异步生成器(Asynchronous Generators)

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

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)

5、异步解析器(Asynchronous Comprehensions)

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

result = [i async for i in aiter() if i % 2]
result = [await fun() for fun in funcs if await condition()]

新增加模块

Python标准库(The Standard Library)中增加了一个新的模块:secrets。该模块用来生成一些安全性更高的随机数,以用来管理数据,比如passwords, account authentication, security tokens, 以及related secrets等。具体用法可参考官方文档:secrets

其他新特性

1、新的 PYTHONMALLOC 环境变量允许开发者设置内存分配器,以及注册debug钩子等。

2、asyncio模块更加稳定、高效,并且不再是临时模块,其中的API也都是稳定版的了。

3、typing模块也有了一定改进,并且不再是临时模块。

4、datetime.strftime 和 date.strftime 开始支持ISO 8601的时间标识符%G, %u, %V。

5、hashlib 和 ssl 模块开始支持OpenSSL1.1.0。

6、hashlib模块开始支持新的hash算法,比如BLAKE2, SHA-3 和 SHAKE。

7、Windows上的 filesystem 和 console 默认编码改为UTF-8。

8、json模块中的 json.load() 和 json.loads() 函数开始支持 binary 类型输入。

9、.......

还有很多其他特性,但在平时工作中能用到的大概就这么多了。有兴趣的读者可以直接参考官方文档:What's New In Python 3.6

Python 相关文章推荐
使用C语言来扩展Python程序和Zope服务器的教程
Apr 14 Python
PyQt4实现下拉菜单可供选择并打印出来
Apr 20 Python
python opencv3实现人脸识别(windows)
May 25 Python
python多进程使用及线程池的使用方法代码详解
Oct 24 Python
Python正则表达式和re库知识点总结
Feb 11 Python
Python3安装Pillow与PIL的方法
Apr 03 Python
python 模拟创建seafile 目录操作示例
Sep 26 Python
Python列表list常用内建函数实例小结
Oct 22 Python
python实现简单颜色识别程序
Feb 19 Python
Django模板获取field的verbose_name实例
May 19 Python
python装饰器三种装饰模式的简单分析
Sep 04 Python
python 使用三引号时容易犯的小错误
Oct 21 Python
再谈Python中的字符串与字符编码(推荐)
Dec 14 #Python
Python文件操作,open读写文件,追加文本内容实例
Dec 14 #Python
你所不知道的Python奇技淫巧13招【实用】
Dec 14 #Python
通过Python爬虫代理IP快速增加博客阅读量
Dec 14 #Python
Python实现并行抓取整站40万条房价数据(可更换抓取城市)
Dec 14 #Python
从零开始学Python第八周:详解网络编程基础(socket)
Dec 14 #Python
Python 'takes exactly 1 argument (2 given)' Python error
Dec 13 #Python
You might like
实现获取http内容的php函数分享
2014/02/16 PHP
destoon会员注册提示“数据校验失败(2)”解决方法
2014/06/21 PHP
PHP微信支付结果通知与回调策略分析
2019/01/10 PHP
JavaScript类型转换方法及需要注意的问题小结(挺全面)
2010/11/11 Javascript
javascript开发随笔一 preventDefault的必要
2011/11/25 Javascript
html+js实现动态显示本地时间
2013/09/21 Javascript
如何学习Javascript入门指导
2013/11/01 Javascript
DOM基础教程之事件对象
2015/01/20 Javascript
jquery实现的横向二级导航效果代码
2015/08/26 Javascript
Angular设置title信息解决SEO方面存在问题
2016/08/19 Javascript
SVG描边动画
2017/02/23 Javascript
ES6模块化的import和export用法方法总结
2017/08/08 Javascript
vue中post请求以a=a&b=b 的格式写遇到的问题
2018/04/27 Javascript
node app 打包工具pkg的具体使用
2019/01/17 Javascript
点击按钮弹出模态框的一系列操作代码实例
2019/03/29 Javascript
详解vue中v-model和v-bind绑定数据的异同
2020/08/10 Javascript
详解Python中with语句的用法
2015/04/15 Python
Python字符串处理之count()方法的使用
2015/05/18 Python
开源软件包和环境管理系统Anaconda的安装使用
2017/09/04 Python
详解Python给照片换底色(蓝底换红底)
2019/03/22 Python
详解python中@的用法
2019/03/27 Python
Python with关键字,上下文管理器,@contextmanager文件操作示例
2019/10/17 Python
python怎么删除缓存文件
2020/07/19 Python
咖啡为什么会有酸味?你喝到的咖啡為什麼是酸的?
2021/03/17 冲泡冲煮
美国值得信赖的婚恋交友网站:eHarmony
2018/10/04 全球购物
黄色火烈鸟:De Gele Flamingo
2019/03/18 全球购物
Notino匈牙利:购买香水和化妆品
2019/04/12 全球购物
MIRTA官网:手工包,100%意大利制造
2020/02/11 全球购物
最新会计专业求职信范文
2014/01/28 职场文书
决心书范文
2014/03/11 职场文书
广告词串烧
2014/03/19 职场文书
亲属关系公证书
2014/04/08 职场文书
元旦寄语大全
2014/04/10 职场文书
工作求职自荐信
2014/06/13 职场文书
微软Win11什么功能最惊艳? Windows11新功能特性汇总
2021/11/21 数码科技
MySQL 自动填充 create_time 和 update_time
2022/05/20 MySQL