當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Python inspect.signature用法及代碼示例

用法:

inspect.signature(callable, *, follow_wrapped=True, globals=None, locals=None, eval_str=False)

返回給定 callableSignature 對象:

>>> from inspect import signature
>>> def foo(a, *, b:int, **kwargs):
...     pass

>>> sig = signature(foo)

>>> str(sig)
'(a, *, b:int, **kwargs)'

>>> str(sig.parameters['b'])
'b:int'

>>> sig.parameters['b'].annotation
<class 'int'>

接受廣泛的 Python 可調用對象,從普通函數和類到 functools.partial() 對象。

對於使用字符串化注釋 (from __future__ import annotations) 在模塊中定義的對象,signature() 將嘗試使用 inspect.get_annotations() 自動 un-stringize 注釋。 globallocalseval_str 參數在解析注解時傳遞到 inspect.get_annotations() ;有關如何使用這些參數的說明,請參閱inspect.get_annotations() 的文檔。

如果無法提供簽名,則引發 ValueError,如果不支持該類型的對象,則引發 TypeError。此外,如果注釋是字符串化的,並且 eval_str 不為假,則對 un-stringize 的 eval() 調用可能會引發任何類型的異常。

函數簽名中的斜杠 (/) 表示它之前的參數是positional-only。有關詳細信息,請參閱有關 positional-only 參數的常見問題解答條目。

3.5 版中的新函數:follow_wrapped範圍。經過False得到一個簽名callable具體來說 (callable.__wrapped__不會用於解開裝飾的可調用對象。)

3.10 版中的新函數:globals,locals, 和eval_str參數。

注意

在 Python 的某些實現中,某些可調用對象可能不是可自省的。例如,在 CPython 中,C 中定義的一些內置函數不提供有關其參數的元數據。

相關用法


注:本文由純淨天空篩選整理自python.org大神的英文原創作品 inspect.signature。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。