Как изменить функцию Python для обработки одного, нескольких или всех параметров в словареPython

Программы на Python
Ответить
Anonymous
 Как изменить функцию Python для обработки одного, нескольких или всех параметров в словаре

Сообщение Anonymous »

Я хочу настроить среду в блокноте Jupyter, где параметры хранятся в словаре parValue и где вы можете изменять значения одного или нескольких параметров с помощью функции par(), оставляя при этом реальный словарь parValue оставаться «под капотом», т.е. не использоваться пользователем напрямую. Следующий скрипт установки partest.py делает это:

Код: Выделить всё

global parValue; parValue = {}

parValue['a'] = 1
parValue['b'] = 2

def par(parValue=parValue, *x, **x_kwarg):
x_kwarg.update(*x)
x_temp = {}
for key in x_kwarg.keys():
if key in parValue.keys():
x_temp.update({key: x_kwarg[key]})
else:
print('Error')
parValue.update(x_temp)
В блокноте Jupyter я могу написать:

Код: Выделить всё

run -i partest.py

# Change a single parameter
par(a=1.5)

# Change two parameters
par(a=1.1, b=2.1)
Однако я также хочу иметь возможность изменить весь словарь parValue, скажем, на parValue2 с помощью аналогичной команды:

Код: Выделить всё

parValue2 = {'a':1.2, 'b':2.2}

par(parValue2)
Но это не работает. Я не получаю никакого сообщения об ошибке, но parValue2 не распространяется на parValue.
Как можно изменить приведенную выше функцию par(), чтобы справиться с этим?
Я знаю, что в блокноте я мог бы иметь команду:

Код: Выделить всё

parValue.update(parValue2)
но я хочу, чтобы словарь parValue был «скрыт» для человека, использующего блокнот.

Подробнее здесь: https://stackoverflow.com/questions/798 ... ers-in-a-d
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»