2010-09-30 55 views
0

我有一個層,它幫助我從形式到表,反之亦然填充記錄,但它確實有些輸入檢查等動態值

這層現在幾種方法被調用多次在不同的部位的webform採用相同的參數,所以我想在代碼文件的開頭打包它們。

kwargs():返回 { 「塔布拉」: 「nombre_tabla」, 「ID」:[hf_id.Value] , 「容器」:Panel1的, 「MsgBox1」: MsgBox1}

然後我打電話

IA.search(** kwargs)

但這樣做這樣字典G的值並用他們在開始時的固定,其中一個從webcontrol中檢索,因此需要動態。因此,我包裹其中在一個函數

DEF kwargs():返回 { 「塔布拉」: 「nombre_tabla」, 「ID」:[hf_id.Value], 「容器」: Panel1的, 「MsgBox1」 :MsgBox1}

,然後我打電話

IA.search(* kwargs()) IA.save( * kwargs())

這樣來自webform(hf_id)的字典的值是動態的,並且不固定。但是我想知道在這種情況下是否有另一種方式,一種python的方式來獲得字典kwargs的值是動態的而不是固定的

回答

1

Python對象是指針(儘管它們不能由用戶直接操作。 )

因此,如果你創建像這樣的列表:

>>> a = [1, 2, 3] 

,然後將其存儲在詞典:

>>> b = { 'key': a, 'anotherkey': 'spam' } 

,你會發現修改在字典中值也修改原來的列表:

>>> b['key'].append(4) 
>>> print b['key'] 
[1, 2, 3, 4] 
>>> print a 
[1, 2, 3, 4] 

如果你想要一個項目的副本,這樣修改將不會改變原來的項目,然後用複製模塊。

>>> from copy import copy 
>>> a = [1, 2, 3] 
>>> b['key'] = copy(a) 
>>> print b['key'] 
[1, 2, 3] 
>>> b['key'].append(4) 
>>> print b['key'] 
[1, 2, 3, 4] 
>>> print a 
[1, 2, 3] 
+0

而不是使用複製模塊,你可以這樣做:'b ['key'] = a [:]' – jcao219 2010-09-30 22:36:55

+0

好點。但複製適用於所有對象,使用[:]運算符僅適用於列表。 – 2010-10-01 06:53:46