2024-04-24 20:49:25 发布
网友
所有变量的{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 }
怎么做?递归是不可取的。你知道吗
您可以这样做—但该解决方案需要参数号升序(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)
那么你期望得到什么样的结果呢?你知道吗
您可以这样做—但该解决方案需要参数号升序(arg1、arg2、…、argN)。你知道吗
退货:
将arg2传递给函数时,函数不知道传入时它的名称是arg2,它只知道它的值是2。您必须获得堆栈跟踪以知道是谁调用了该函数,刮取源代码以获得名称,然后就很简单了。你知道吗
但如果我这样称呼它呢:
那么你期望得到什么样的结果呢?你知道吗
相关问题 更多 >
编程相关推荐