在*args, **kwargs上强制规定参数的调用约定,
在*args, **kwargs上强制规定参数的调用约定,
首先我们要知道任何关于函数调用签名的问题,都和inspect模块有着关系
这个知识点涉及到两个类:
Signature、
Parameter
创建一个签名对象,这是个重点
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
其实具体的应用,什么场景下用比较合适,我目前还不是很清楚,后面遇到希望能回来再接着完善,先记录下来
只有永不遏止的奋斗,才能使青春之花,即便是凋谢,也是壮丽地凋谢
相关内容
- Python学习:定义函数的默认参数和可变参数,例如Pyt
- Python commandline-config简洁命令行配置工具: 一个供用户
- Django ORM 常用字段和参数,BooleanFie
- 带有参数的装饰器,在装饰器的外面套一个
- 普通函数、参数、匿名函数、高阶函数、递归函数、闭
- Pytest框架 — 11、Pytest的标记(二)(parametrize参数化),
- python-print函数之sep、end参数,其主要用法如下:1.
- 【JS 逆向百例】某公共资源交易网,公告 URL 参数逆向
- python3教程:默认参数为列表,此外,由于对象不变,
- Two---python循环语句/迭代器生成器/yield与return/自定义函
评论关闭