Вызов del в списке

class ToBeDeleted:
    def __init__(self, value):
        self.value = val

    # Whatever...

    def __del__(self):
        print self.value

l = [ToBeDeleted(i) for i in range(3)]
del l

Это напечатает 2, 1, 0 .


  • Теперь, порядок удаленных элементов определен где-то в спецификации, или он зависит от реализации? (или, может быть, я не понимаю лежащего в основе механика)

  • Может ли результат быть, например, 0, 1, 2 ? Я понимаю, что порядок 2, 1, 0 вероятен y сделано, чтобы избежать перераспределения памяти для элементов при их удалении, но все же вопрос остается.

  • И последний - в чем разница между операторами del l и del l [:] ?

5
задан Yippie-Ki-Yay 21 November 2011 в 19:29
поделиться