Инициализация Python и количество циклических ссылок - PullRequest
1 голос
/ 05 апреля 2010

Можем ли мы инициализировать объекты Python следующим образом:

a = b = c = None

Мне кажется, когда я сделал a = b = c = list(), это вызовет проблему с циклическим подсчетом ссылок.

Ответы [ 3 ]

4 голосов
/ 05 апреля 2010

В вашем коде нет циклов, и даже если бы они были, сборщик мусора в Python может нормально обрабатывать циклические ссылки, так что вам не нужно об этом беспокоиться.

Однако ваш код имеет другое (возможно) проблема: все три переменные будут указывать на один и тот же список.Это означает, что изменение, например, a, также изменит b и c (где под «изменением» я подразумеваю вызов мутирующей операции, такой как, например, append. Переназначение переменной не повлияет на другие переменные).

2 голосов
/ 05 апреля 2010

Да, вы можете сделать это. В вашем коде нет циклической ссылки, и даже если бы она существовала, это не вызвало бы никаких проблем, поскольку в Python есть сборщик мусора, который правильно обрабатывает циклы.

1 голос
/ 05 апреля 2010

Нет. Это эквивалентно:

c = list()
b = c
a = b

Нет проблем. Почему вы думаете, что будет проблема?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...