kwargs中的动态值

时间:2010-09-30 12:39:11

标签: asp.net webforms ironpython python

我有一个图层可以帮助我将表单中的记录填充到表格中,反之亦然,它会进行一些输入检查等。

现在,在webform的不同部分中多次调用的这个层的几个方法采用相同的参数,所以我想在代码文件的开头打包它们。

  

kwargs():返回   { “塔布拉”: “nombre_tabla”, “ID”:[hf_id.Value]   ,“container”:Panel1,“MsgBox1”:   MsgBox1}

然后我打电话给

  

IA.search(** kwargs)

但是按照这种方式,字典的值将与他们在开头时的值一起修复,其中一个从webcontrol中检索,因此它需要是动态的。所以我把它们包装在一个函数

  

def kwargs():返回   { “塔布拉”: “nombre_tabla”   “id”:[hf_id.Value],“容器”:   Panel1,“MsgBox1”:MsgBox1}

然后我打电话

  

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

等。

这样来自webform(hf_id)的字典值是动态的而不是固定的。但我想知道在这种情况下是否有另一种方式,一种pythonic方式,使字典kwargs的值变为动态而不是固定的

1 个答案:

答案 0 :(得分:2)

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]