Я уверен, что где-то есть документ, отвечающий на этот точный вопрос, но я не уверен, что именно Google должен точно
Сценарий:
У меня есть дерево решений, которое мне нужно перебирать по большому словарю, и на основе определенных условий нужно извлекать переменные из различных входных словарей. Я знаю, что если я храню все это в одном модуле, я могу получить доступ к глобальной переменной в своей функции, но если я разделю их на отдельные модули, мне придется передать все входные словари.
Вопрос 1)
Во втором случае это дублирующая память или переданные переменные просто указатель на позицию в памяти.
Вопрос 2)
Для редактирования и создания новых ключей в словаре есть способ изменить словарь, не переназначая его.
Большое спасибо
Текущая ситуация:
input_dict =
{'A': 1, 'B': 2}
large_dictionary=
{1 : { 'Name': 'John', 'Age': 30},
....
1000 : { 'Name': 'Sam', 'Age': 20}}
def function_1():
data['variable_to_create'] = input_dict['A']
for key,data in large_dictionary.items():
...
Some large decision tree
...
function_1()
Предлагаемая ситуация:
Модуль
def function_1(data, input_dict):
data['variable_to_create'] = input_dict['A']
return data
Код
from new_module import function_1
input_dict =
{'A': 1, 'B': 2}
large_dictionary=
{1 : { 'Name': 'John', 'Age': 30},
....
1000 : { 'Name': 'Sam', 'Age': 20}}
for key,data in large_dictionary.items():
...
Some large decision tree
...
data = function_1(data, input_dict)