自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

用 Python 3.8 中的這個位置技巧讓你的 API 變得更好

開發(fā) 后端
這是 Python 3.x 首發(fā)特性系列文章的第九篇。Python 3.8 于 2019 年首次發(fā)布,兩年后,它的許多很酷的新特性仍然沒有被使用。

[[404288]]

探索只接受位置參數(shù)和其他兩個未被充分利用但仍然有用的 Python 特性。

這是 Python 3.x 首發(fā)特性系列文章的第九篇。Python 3.8 于 2019 年首次發(fā)布,兩年后,它的許多很酷的新特性仍然沒有被使用。下面是其中的三個。

importlib.metadata

入口點 在 Python 包中被用來做各種事情。大多數(shù)人熟悉的是 console_scripts 入口點,不過 Python 中的許多插件系統(tǒng)都使用它們。

在 Python 3.8 之前,從 Python 中讀取入口點的最好方法是使用 pkg_resources,這是一個有點笨重的模塊,它是 setuptools 的一部分。

新的 importlib.metadata 是一個內(nèi)置模塊,它允許訪問同樣的東西:

  1. from importlib import metadata as importlib_metadata
  2.  
  3. distribution = importlib_metadata.distribution("numpy")
  4. distribution.entry_points
  1.     [EntryPoint(name='f2py', value='numpy.f2py.f2py2e:main', group='console_scripts'),
  2.      EntryPoint(name='f2py3', value='numpy.f2py.f2py2e:main', group='console_scripts'),
  3.      EntryPoint(name='f2py3.9', value='numpy.f2py.f2py2e:main', group='console_scripts')]

入口點并不是 importlib.metadata 允許訪問的唯一東西。可以調(diào)試、報告,或者(在極端情況下)觸發(fā)兼容模式,你也可以在運行時檢查依賴的版本!

  1. f"{distribution.metadata['name']}=={distribution.version}"`[/code] [code]`    'numpy==1.20.1'

只接受位置參數(shù)

強制關(guān)鍵字的參數(shù)在傳達 API 作者的意圖方面取得巨大成功之后,另一個空白被填補了:只接受位置參數(shù)。

特別是對于那些允許使用任意關(guān)鍵字的函數(shù)(例如,生成數(shù)據(jù)結(jié)構(gòu)),這意味著對允許的參數(shù)名稱的限制更少:

  1. def some_func(prefix, /, **kwargs):
  2.     print(prefix, kwargs)
  1. some_func("a_prefix", prefix="prefix keyword value")
  1.   a_prefix {'prefix': 'prefix keyword value'}`

注意,令人困惑的是,變量 prefix 的值與 kwargs["prefix"] 的值不同。就像在很多地方一樣,要注意小心使用這個功能。

自我調(diào)試表達式

50 多年來,print() 語句(及其在其他語言中的對應語句)一直是快速調(diào)試輸出的最愛。

但是我們在打印語句方面取得了很大的進展,比如:

  1. special_number = 5
  2. print("special_number = %s" % special_number)
  1.     special_number = 5

然而,自我記錄的 f-strings 使它更容易明確:

  1. print(f"{special_number=}")
  1.     special_number=5`

在 f-string 插值部分的末尾添加一個 =,可以保留字面部分,同時添加數(shù)值。

當更復雜的表達式在該部分內(nèi)時,這就更有用了:

  1. values = {}
  2. print(f"{values.get('something', 'default')=}")
  1.     values.get('something', 'default')='default'

歡迎來到 2019 年

 

Python 3.8 大約在兩年前發(fā)布,它的一些新特性非??幔覜]有得到充分利用。如果你還沒使用,那么將他們添加到你的工具箱中。

 

責任編輯:龐桂玉 來源: Linux中國
相關(guān)推薦

2014-05-07 09:41:21

UbuntuTrusty Tahr

2015-10-30 10:33:02

溝通程序員事業(yè)發(fā)展

2020-08-06 00:25:38

Python代碼開發(fā)

2023-01-04 08:17:21

Typescript技巧欺騙性

2020-11-20 10:40:20

PyTorch神經(jīng)網(wǎng)絡(luò)代碼

2009-11-20 09:20:09

MySQL分區(qū)負載均衡

2021-09-01 10:35:19

asyncawaitVue

2021-01-27 10:46:07

Pytorch深度學習模型訓練

2023-03-27 23:57:25

JavaScrip開發(fā)技巧

2020-07-20 10:40:52

Linux命令Ubuntu

2020-12-30 05:29:48

API分庫分表

2024-06-13 12:24:06

C++開發(fā)代碼

2019-05-21 14:08:40

豆瓣Python圖書

2019-02-22 21:53:22

習慣FabulousAPP

2023-12-01 15:34:03

Python圖片

2023-03-09 15:45:36

ES6編碼技巧數(shù)組

2020-08-13 10:11:14

物聯(lián)網(wǎng)安全智能家居物聯(lián)網(wǎng)

2020-07-24 15:40:51

CSS前端代碼

2021-06-16 18:16:22

Windows 10Windows操作系統(tǒng)

2009-11-30 11:33:01

點贊
收藏

51CTO技術(shù)棧公眾號