Python не является функциональным языком и никогда не будет. Поэтому, когда вы используете понимание списка, вы можете изменить состояние несвязанных структур данных. Этого нельзя разумно предотвратить, и меры, подобные описанным вами, помогут только в конкретном случае, который вы выдвинули на первый план.
Как правило, человек, использующий понимание списка, может написать код, который достаточно прост для понимания и лишен побочных эффектов, насколько это возможно. Я считаю код, который вы разместили, плохим стилем программирования и глупым способом создания перевернутого списка, когда существует list.reverse
.
Хотя, я полагаю, если список, из которого вы извлекаете в этом примере, является очередью, к которой можно добавить код обработки очереди (то есть что-то гораздо более сложное, чем d.pop()
) или другой поток, тогда код это своего рода разумный способ делать вещи. Хотя я действительно думаю, что это должен быть цикл, а не понимание списка.