Python 3.7 即將發佈,引入多項新功能!

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/',                    ...]  }