Python 3.7 即將發佈,引入多項新功能!
- 2020 年 4 月 2 日
- 筆記

Python 3.7 將於今年夏天發佈,先來窺探一些新功能。
Python 3.7 中有許多新東西:
- 各種字符集的改進
- 對注釋的推遲評估
- 以及對 dataclass 的支持
▌什麼是數據類
大多數 Python 開發人員將編寫很多類,如下所示:
class MyClass: def __init__(self, var_a, var_b): self.var_a = var_a self.var_b = var_b
數據類通過自動生成 dunder 方法來。例如,一個 __init__ 接受這些參數並將其分配給自己。之前的小例子可以重寫為:
@dataclass class MyClass: var_a: str var_b: str
關鍵的區別在於類型提示:它們允許你標記某個變量 _should_ 是什麼類型。在運行時,不檢查這些類型,但可以使用 PyCharm 或類似 mypy 的命令行工具來靜態檢查代碼。
▌星球大戰 API(Star Wars API)
如果有人用星球大戰電影的數據創建了 REST API 時,它的粉絲群肯定會興奮不已。而實際上已經有人這麼做了,他不僅創建了 Star Wars API,還為它創建了 Python 封裝庫。
而我們也可以編寫自己的封裝(Wrapper)。
我們可以使用請求庫從星球大戰 API 獲取資源:
response = requests.get('https://swapi.co/api/films/1/')
此端點(與所有 swapi 端點一樣)以 JSON 消息進行響應。
dictionary = response.json()
我們在 dictionary 中擁有自己的數據:
{ 'characters': ['https://swapi.co/api/people/1/', … ], 'created': '2014-12-10T14:23:31.880000Z', 'director': 'George Lucas', 'edited': '2015-04-11T09:46:52.774897Z', 'episode_id': 4, 'opening_crawl': 'It is a period of civil war.rn … ', 'planets': ['https://swapi.co/api/planets/2/', ...], 'producer': 'Gary Kurtz, Rick McCallum', 'release_date': '1977-05-25', 'species': ['https://swapi.co/api/species/5/', ...], 'starships': ['https://swapi.co/api/starships/2/', ...], 'title': 'A New Hope', 'url': 'https://swapi.co/api/films/1/', 'vehicles': ['https://swapi.co/api/vehicles/4/', ...] }