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 類型輸入。
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com