用法:
inspect.signature(callable, *, follow_wrapped=True, globals=None, locals=None, eval_str=False)
返回給定
callable
的Signature
對象:>>> 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 注釋。global
、locals
和eval_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 inspect.Parameter.replace用法及代碼示例
- Python inspect.Parameter.kind用法及代碼示例
- Python inspect.Signature.from_callable用法及代碼示例
- Python inspect.isasyncgenfunction用法及代碼示例
- Python inspect.isawaitable用法及代碼示例
- Python inspect.BoundArguments.apply_defaults用法及代碼示例
- Python inspect.BoundArguments用法及代碼示例
- Python inspect.Parameter.kind.description用法及代碼示例
- Python inspect.formatargspec用法及代碼示例
- Python inspect.Signature.replace用法及代碼示例
- Python inspect.getcallargs用法及代碼示例
- Python scipy integrate.trapz用法及代碼示例
- Python int轉exponential用法及代碼示例
- Python integer轉string用法及代碼示例
- Python scipy interpolate.CubicHermiteSpline.solve用法及代碼示例
- Python scipy interpolate.CubicSpline.solve用法及代碼示例
- Python int.from_bytes用法及代碼示例
- Python scipy integrate.cumtrapz用法及代碼示例
- Python scipy interpolate.PchipInterpolator.solve用法及代碼示例
- Python int.bit_length用法及代碼示例
注:本文由純淨天空篩選整理自python.org大神的英文原創作品 inspect.signature。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。