Как понять дважды непрерывное назначение `cur = dummy = Node (7)` или `a = b = Node (7)`?

Вот как я это сделал.

Эта функция рекурсивно ищет словарь, содержащий вложенные словари и списки. Он создает список с именем fields_found, который содержит значение для каждого момента поиска поля. «Поле» - это ключ, который я ищу в словаре и его вложенных списках и словарях.

def get_recursively(search_dict, field):
    """Takes a dict with nested lists and dicts,
    and searches all dicts for a key of the field
    provided.
    """
    fields_found = []

    for key, value in search_dict.iteritems():

        if key == field:
            fields_found.append(value)

        elif isinstance(value, dict):
            results = get_recursively(value, field)
            for result in results:
                fields_found.append(result)

        elif isinstance(value, list):
            for item in value:
                if isinstance(item, dict):
                    more_results = get_recursively(item, field)
                    for another_result in more_results:
                        fields_found.append(another_result)

    return fields_found
0
задан guorui 22 March 2019 в 06:34
поделиться

1 ответ

Я постараюсь объяснить это как можно проще.

A1: cur является именем переменной и указывает на объект Node в памяти. То же самое относится и к dummy, это указатель на объект в памяти.

A2: Поскольку вы делаете cur = dummy = Node(7), вы присваиваете обеим переменным один и тот же объект в памяти. Таким образом, когда он изменяется, обе переменные, указывающие на него, заметят это изменение. Но, поскольку на шаге 4 вы объявляете два объекта Node и назначаете их различным переменным, они изменятся независимо.

A3: это физическая область памяти на диске.

0
ответ дан Fejs 22 March 2019 в 06:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: