首先我们要知道任何关于函数调用签名的问题,都和inspect模块有着关系
这个知识点涉及到两个类:- Parameter<br>创建一个签名对象,这是个重点
复制代码- 1 from inspect import Signature, Parameter
- 2
- 3 params = [Parameter("name", Parameter.POSITIONAL_OR_KEYWORD, default="g"),
- 4 Parameter("gender", Parameter.POSITIONAL_OR_KEYWORD, default="man"),
- 5 Parameter("age", Parameter.KEYWORD_ONLY, default=25)]
- 6
- 7 sig = Signature(params)
- 8 print(sig)
- 9
- 10
- 11 def func(*args, **kwargs):
- 12 res = sig.bind(*args, **kwargs)
- 13 for name in res.arguments:
- 14 print(name, res.arguments[name])
- 15
- 16
- 17 if __name__ == '__main__':
- 18 # 测试调用
- 19 func('c', gender="m", age=18)
复制代码 output:
(name='g', gender='man', *, age=25)
name c
gender m
age 18
其实具体的应用,什么场景下用比较合适,我目前还不是很清楚,后面遇到希望能回来再接着完善,先记录下来
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |