python函数中输入关键字参数——字典参数,怎么样按输入的顺序输出?
为了方便理解,举多个例子:
例子一:
https://www.zhihu.com/question/24360507
#编写者
def test(**kwargs):
print args.keys()
#使用者,我如下调用
test(a=1, c=3, d=2, e=4)
#然后输出的关键字是按照函数调用的顺序给输出(a,c,d,e),而不是无序输出。
例子二:
从使用者的角度,如下调用函数最人性化和清晰
in(id=4,name='ding')
in(iq=100,eq=90)
in(code='good',date=16)
从编写者的角度分析,参数名可变,参数值可变,参数个数可变,显然采用**kwargs——关键字参数,比较合理。
解决方法:
#目标:test(id=4,name='ding')
#从数学角度上分析,估算使用者按键盘的次数为:17
1.采用网友的建议,输入时附加顺序。
test(id=4,name='ding',order_list=('id','name'))
显然,这很不人性化,对于使用者的角度是特别不合理的,不适合产品需求。
从数学角度上分析,估算使用者按键盘的次数为:32
Wrong!
2.换种思路,改成用可变参数输入,这样即可按照输入的顺序输出
test('id',4,'name','ding')
可以看出比第一种方法简单一些。
从使用者的角度分析,麻烦在于还需拆分输入参数,甚至当参数多了后,操作数几何暴增。
从编写者的角度分析,麻烦在于还得识别参数的类型,比较复杂。
从数学角度上分析,估算使用者按键盘的次数为:19
Not Good!
3.在不满足顺序输出的要求下,采用可变参数输入
def test(**kwargs)
但是可变参数就是无序字典,如果要顺序输出,在查阅了大量资料后,确定了两者矛盾,无法调和!!!
我现在的想法是看能不能改变python里面的机制——解释器。
如果广大网友大牛,有想法的有解决方式的,欢迎下面评论或私聊!!!!!
Can’t be achieved Or Very Hard。
4.最完美接近的手段
#编写者
def test(string):
#伪代码
Orderdict=Orderdict(string.replace(',','='))
#使用者:
test("id=4,name='ding'")
如果读者亲自测试,就会发现无论
从编写者的角度出发,编写难度和复杂度下降!
从使用者的角度出发,就多了一个按键”“
从数学角度上分析,估算使用者按键盘的次数为:18
Much Good.
最后,如果您觉得有用或者有想法的话,欢迎点赞或者评论。
python群:190341254
丁。