динамические значения в кваргах - PullRequest
1 голос
/ 30 сентября 2010

У меня есть слой, который помогает мне заполнять записи из формы в таблицы и наоборот, он выполняет некоторую проверку ввода и т. Д.

Теперь несколько методов этого слоя, которые вызываются несколько раз в разных частяхwebform принимает те же параметры, поэтому я хотел упаковать их в начале файла кода.

kwargs (): return {"tabla": "nombre_tabla", "id": [hf_id.Value], "container": Panel1, "MsgBox1": MsgBox1}

затем я вызываю

IA.search (** kwargs)

, но при этом значения словаря фиксируются с теми, которые были в нихначало, и один из них извлекается из веб-управления, поэтому он должен быть динамическим.Поэтому я обернул их в функцию

def kwargs (): return {"tabla": "nombre_tabla", "id": [hf_id.Value], "container": Panel1, "MsgBox1": MsgBox1}

, а затем я звоню

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

и т. Д.

и таким образом значение словаря, полученного из веб-формы (hf_id), является динамическим и не является фиксированным.Но мне было интересно, если в этом случае есть другой способ, питонский способ, чтобы значения словаря kwargs были динамическими и не фиксированными

1 Ответ

2 голосов
/ 30 сентября 2010

Объекты 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]
...