gpt4 book ai didi

python - 如何捕获字典中函数的输入参数

转载 作者:太空宇宙 更新时间:2023-11-03 14:56:35 24 4
gpt4 key购买 nike

为了记录目的,我尝试自动捕获传递给该函数内函数的参数,并将它们转换为 arg : value 的字典。我尝试了 inspect.signature() 模块,但它只提供函数的默认输入,而不提供传递给它的参数

import inspect

def my_add_func(a, b ,c=3):
sig = inspect.signature(my_add_func)
print("my_add_func args : {0}".format(sig))
return a + b + c

if __name__ == '__main__':
my_add_func(10, 2, 3)

输出:

(a, b, c=3)

而我想要:

{a: 10, b: 2, c:3}

我怎样才能做到这一点?

最佳答案

您可以使用signature.bind :

import inspect

def my_add_func(a, b ,c=3):
sig = inspect.signature(my_add_func)
print("my_add_func args : {0}".format(sig.bind(a, b, c))) # changed here
return a + b + c

if __name__ == '__main__':
my_add_func(10, 2, 3)

给出:

my_add_func args : <BoundArguments (a=10, b=2, c=3)>

如果您希望将其作为映射(类似字典),您可以访问 BoundArguments.arguments属性:

>>> sig.bind(a, b, c).arguments
OrderedDict([('a', 10), ('b', 2), ('c', 3)])

或者甚至将其转换为普通字典:

>>> dict(sig.bind(a, b, c).arguments))
{'a': 10, 'b': 2, 'c': 3}

关于python - 如何捕获字典中函数的输入参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45521174/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com