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丁。