在*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
其实具体的应用,什么场景下用比较合适,我目前还不是很清楚,后面遇到希望能回来再接着完善,先记录下来
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!