2010-09-30 3 views
0

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

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

kwargs(): возвращает { "табла": "nombre_tabla", "идентификатор": [hf_id.Value] , "контейнера": Panel1 "MsgBox1": MsgBox1}

тогда я называю

IA.search (**) kwargs

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

Защиту kwargs(): возвращает { "табла": "nombre_tabla", "идентификатор": [hf_id.Value], "контейнер": Panel1, "MsgBox1" : MsgBox1}

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

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

т.д.

и, таким образом значение словаря, который исходит от WebForm (hf_id) является динамическим и не фиксированы. Но мне было интересно, есть ли в этом случае другой способ, питонический способ, чтобы значения словаря 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 [ 'ключ'] = а [:]' – jcao219

+0

Хороший момент. Но копирование всех объектов с использованием оператора [:] работает только для списков. –

Смежные вопросы