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}
函数 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}