Python3.6正式版新特性預(yù)覽
按照Python官網(wǎng)上的計(jì)劃,Python3.6正式版期望在2016-12-16號發(fā)布,也就是這周五。從去年的5月份開始,Python3.6版本就已經(jīng)動(dòng)手開發(fā)了,期間也斷斷續(xù)續(xù)的發(fā)布了4個(gè)Alpha版,4個(gè)Beta版,以及一個(gè)Candidate版本。
作為一個(gè)Python愛好者,很期待新版本的發(fā)布,也希望能第一時(shí)間嘗試一下新特性。本文就根據(jù)Python官網(wǎng)文章,簡單介紹下Python3.6中的一些新特性。
如果你想嘗試Python3.6,又不想破壞本機(jī)的Python環(huán)境,建議使用Docker。如果不會(huì)使用Docker,可以看下這里 http://chabaoo.cn/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.'
其效果相當(dāng)于:
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)中產(chǎn)生,在實(shí)際的使用中,并不進(jìn)行嚴(yán)格檢查。
在Python3.6中,引入了新的語法:
from typing import List, Dict primes: List[int] = [] captain: str # 此時(shí)沒有初始值 class Starship: stats: Dict[str, int] = {}
3、數(shù)字的下劃線寫法(Underscores in Numeric Literals)
即允許在數(shù)字中使用下劃線,以提高多位數(shù)字的可讀性。
a = 1_000_000_000_000_000 # 1000000000000000 b = 0x_FF_FF_FF_FF # 4294967295
除此之外,“字符串格式化”也支持“_”選項(xiàng),以打印出更易讀的數(shù)字字符串:
'{:_}'.format(1000000) # '1_000_000' '{:_x}'.format(0xFFFFFFFF) # 'ffff_ffff'
4、異步生成器(Asynchronous Generators)
在Python3.5中,引入了新的語法 async 和 await 來實(shí)現(xiàn)協(xié)同程序。但是有個(gè)限制,不能在同一個(gè)函數(shù)體內(nèi)同時(shí)使用 yield 和 await,在Python3.6中,這個(gè)限制被放開了,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標(biāo)準(zhǔn)庫(The Standard Library)中增加了一個(gè)新的模塊:secrets。該模塊用來生成一些安全性更高的隨機(jī)數(shù),以用來管理數(shù)據(jù),比如passwords, account authentication, security tokens, 以及related secrets等。具體用法可參考官方文檔:secrets
其他新特性
1、新的 PYTHONMALLOC 環(huán)境變量允許開發(fā)者設(shè)置內(nèi)存分配器,以及注冊debug鉤子等。
2、asyncio模塊更加穩(wěn)定、高效,并且不再是臨時(shí)模塊,其中的API也都是穩(wěn)定版的了。
3、typing模塊也有了一定改進(jìn),并且不再是臨時(shí)模塊。
4、datetime.strftime 和 date.strftime 開始支持ISO 8601的時(shí)間標(biāo)識符%G, %u, %V。
5、hashlib 和 ssl 模塊開始支持OpenSSL1.1.0。
6、hashlib模塊開始支持新的hash算法,比如BLAKE2, SHA-3 和 SHAKE。
7、Windows上的 filesystem 和 console 默認(rèn)編碼改為UTF-8。
8、json模塊中的 json.load() 和 json.loads() 函數(shù)開始支持 binary 類型輸入。
9、.......
相關(guān)文章
python數(shù)據(jù)結(jié)構(gòu)之鏈表的實(shí)例講解
下面小編就為大家?guī)硪黄猵ython數(shù)據(jù)結(jié)構(gòu)之鏈表的實(shí)例講解。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-07-07python Matplotlib底圖中鼠標(biāo)滑過顯示隱藏內(nèi)容的實(shí)例代碼
這篇文章主要介紹了python Matplotlib底圖中鼠標(biāo)滑過顯示隱藏內(nèi)容,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-07-07Python設(shè)計(jì)模式中單例模式的實(shí)現(xiàn)及在Tornado中的應(yīng)用
這篇文章主要介紹了Python設(shè)計(jì)模式中單例模式的實(shí)現(xiàn)及在Tornado中的應(yīng)用,講解了單例模式用于設(shè)計(jì)Tornado框架中的線程控制方面的相關(guān)問題,需要的朋友可以參考下2016-03-03Python實(shí)現(xiàn)判斷一個(gè)字符串是否包含子串的方法總結(jié)
這篇文章主要介紹了Python實(shí)現(xiàn)判斷一個(gè)字符串是否包含子串的方法,結(jié)合實(shí)例形式總結(jié)分析了四種比較常用的字符串子串判定方法,需要的朋友可以參考下2017-11-11Django--權(quán)限Permissions的例子
今天小編就為大家分享一篇Django--權(quán)限Permissions的例子,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08基于PyQt5制作Excel數(shù)據(jù)分組匯總器
這篇文章主要介紹了基于PyQt5制作的一個(gè)小工具:Excel數(shù)據(jù)分組匯總器。文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起試一試2022-01-01