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 相关文章推荐
python使用xlrd实现检索excel中某列含有指定字符串记录的方法
May 09 Python
python 自动化将markdown文件转成html文件的方法
Sep 23 Python
Python控制多进程与多线程并发数总结
Oct 26 Python
Python数据结构与算法之完全树与最小堆实例
Dec 13 Python
Python 绘图库 Matplotlib 入门教程
Apr 19 Python
python实现屏保计时器的示例代码
Aug 08 Python
树莓派动作捕捉抓拍存储图像脚本
Jun 22 Python
python计算波峰波谷值的方法(极值点)
Feb 18 Python
logging level级别介绍
Feb 21 Python
python使用paramiko实现ssh的功能详解
Mar 06 Python
python 瀑布线指标编写实例
Jun 03 Python
Python实现列表中非负数保留,负数转化为指定的数值方式
Jun 04 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
PHP面向对象五大原则之开放-封闭原则(OCP)详解
2018/04/04 PHP
PHP7 弃用功能
2021/03/09 PHP
Prototype使用指南之hash.js
2007/01/10 Javascript
javascript里使用php代码实例
2014/12/13 Javascript
node.js中的fs.fstat方法使用说明
2014/12/15 Javascript
谷歌浏览器调试JavaScript小技巧
2014/12/29 Javascript
js控制输入框获得和失去焦点时状态显示的方法
2015/01/30 Javascript
基于Javascript实现文件实时加载进度的方法
2016/10/12 Javascript
JavaScript捕捉事件和阻止冒泡事件实例分析
2018/08/03 Javascript
vue项目中将element-ui table表格写成组件的实现代码
2019/06/12 Javascript
CountUp.js实现数字滚动增值效果
2019/10/17 Javascript
vue实现用户长时间不操作自动退出登录功能的实现代码
2020/07/23 Javascript
关于Vue中$refs的探索浅析
2020/11/05 Javascript
Python对象的深拷贝和浅拷贝详解
2014/08/25 Python
python中enumerate函数用法实例分析
2015/05/20 Python
详解Django中Request对象的相关用法
2015/07/17 Python
Python的collections模块中的OrderedDict有序字典
2016/07/07 Python
Python复数属性和方法运算操作示例
2017/07/21 Python
基于Python 装饰器装饰类中的方法实例
2018/04/21 Python
Python判断一个文件夹内哪些文件是图片的实例
2018/12/07 Python
python使用BeautifulSoup与正则表达式爬取时光网不同地区top100电影并对比
2019/04/15 Python
Python数据分析pandas模块用法实例详解
2019/11/20 Python
Pyorch之numpy与torch之间相互转换方式
2019/12/31 Python
python 实现读取csv数据,分类求和 再写进 csv
2020/05/18 Python
一文详述 Python 中的 property 语法
2020/09/01 Python
python连接手机自动搜集蚂蚁森林能量的实现代码
2021/02/24 Python
美国椅子和沙发制造商:La-Z-Boy
2020/10/25 全球购物
办公室文书岗位职责
2013/12/16 职场文书
信息技术教学反思
2014/02/12 职场文书
艺校音乐专业自我鉴定范文
2014/03/01 职场文书
4s店销售经理岗位职责
2014/07/19 职场文书
离婚起诉书范文2016
2015/11/26 职场文书
2016廉政教育学习心得体会
2016/01/25 职场文书
Python 中数组和数字相乘时的注意事项说明
2021/05/10 Python
如何优化vue打包文件过大
2022/04/13 Vue.js
利用正则表达式匹配浮点型数据
2022/05/30 Java/Android