return 参数字典 python 中的函数

Function which return dictionary of arguments in python

函数 func(*args, **kwargs) 应该 return 字典,并且该字典的所有元素都应该是数字或字符串变量。 如果函数的参数是字典,那么函数应该 return 包含参数字典的所有元素和其他参数的字典。 例如:

arg1 = { 'x': 'X', 'y': 'Y' }  
arg2 = 2
arg3 = { 'p': arg1, 'pi': 3.14 }
func(arg2, arg3, arg4=4)

应该return这样:

{ 'x': 'X', 'y': 'Y', 'arg2': 2, 'pi': 3.14, 'arg4': 4 }

怎么做?递归是不可取的。

当你将 arg2 传递给函数时,函数并不知道你传入它时它被命名为 arg2,它只知道它的值为 2。你必须获取堆栈跟踪才能知道谁调用了该函数, 抓取源码取名就简单了

但是如果我这样称呼它呢:

func(2)

那你期望什么输出?

您可以这样做 - 但该解决方案需要参数编号递增(arg1、arg2、...、argN)。

def func(*args, **kwargs):
    res = {}
    for i, a in enumerate(args):
        if isinstance(a, dict):
            res.update(a)
        else:
            res['arg%s' % (i+1)] = a
    res.update(kwargs)
    return res


arg1 = { 'x': 'X', 'y': 'Y' }  
arg2 = 2
arg3 = { 'p': arg1, 'pi': 3.14 }

myDict = func(arg1, arg2, arg3, arg4=4)
print(myDict)

returns:

{'x': 'X', 'y': 'Y', 'arg2': 2, 'p': {'x': 'X', 'y': 'Y'}, 'pi': 3.14, 'arg4': 4}