返回python参数字典的函数

2024-04-24 20:49:25 发布

您现在位置:Python中文网/ 问答频道 /正文

所有变量的{string}或都应该返回数值元素。 如果函数的参数是dictionary,那么函数应该返回dictionary以及参数dictionary的所有元素和其他参数。 例如:

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

应返回以下内容:

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

怎么做?递归是不可取的。你知道吗


Tags: 函数元素参数stringdictionarypiarg3数值
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)

退货:

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

将arg2传递给函数时,函数不知道传入时它的名称是arg2,它只知道它的值是2。您必须获得堆栈跟踪以知道是谁调用了该函数,刮取源代码以获得名称,然后就很简单了。你知道吗

但如果我这样称呼它呢:

func(2)

那么你期望得到什么样的结果呢?你知道吗

相关问题 更多 >