我有一个图层可以帮助我将表单中的记录填充到表格中,反之亦然,它会进行一些输入检查等。
现在,在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的值变为动态而不是固定的
答案 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]