函数,该函数返回python中的参数字典
函数函数,该函数返回python中的参数字典,python,python-2.7,dictionary,args,keyword-argument,Python,Python 2.7,Dictionary,Args,Keyword Argument,函数func(*args,**kwargs)应返回字典,该字典的所有元素应为数值或字符串变量。 若函数的参数是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', 'arg
func(*args,**kwargs)
应返回字典,该字典的所有元素应为数值或字符串变量。
若函数的参数是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 }
怎么做?递归是不可取的。当您将arg2传递给函数时,函数在传入它时不知道它的名称是arg2,它只知道它的值是2。您必须获取堆栈跟踪以了解是谁调用了该函数,然后从源代码中获取名称,这样就很简单了 但如果我这样称呼它呢:
func(2)
那么您希望得到什么样的输出呢?您可以这样做,但该解决方案需要参数编号递增(arg1、arg2、…、argN) 返回:
{'x': 'X', 'y': 'Y', 'arg2': 2, 'p': {'x': 'X', 'y': 'Y'}, 'pi': 3.14, 'arg4': 4}
函数
func(*args)
将无法确定并返回名称arg2
!arg3的p键丢失了吗?@Tbaki它没有丢失,arg3是字典,所以我们必须深入了解arg3中是否有数字或字符串元素。@deceze有一个locals()函数可以确定参数的名称,我错了吗?不,locals
对您没有帮助。只有一堆痕迹可以,但为了所有神圣的爱,请不要去那里。“然后它会很简单”——对于“简单”的特殊定义…ಠ_ಠ我是python新手,所以不要怪我。若as*args只能提供字典呢?阅读关于类dict的更新方法:这不是我一直关注的。莫里斯给出了简单的解决方案,非常接近。还有一件事我想说的是带有键'p'
unpackage的元素。只有当它们的值相同时,同名变量才应在myDict
中,如果不是这样,则两者都不应存在。这应该在将参数传递给函数之前完成。。。我的意思是,当你创建arg变量时。
{'x': 'X', 'y': 'Y', 'arg2': 2, 'p': {'x': 'X', 'y': 'Y'}, 'pi': 3.14, 'arg4': 4}