ну ... это действительно зависит от контекста.В конечном итоге он передает объект slice
(slice(None,None,None)
) одному из следующих методов: __getitem__
, __setitem__
или __delitem__
.(На самом деле, если объект имеет __getslice__
, он будет использоваться вместо __getitem__
, но теперь он не рекомендуется и не должен использоваться).
Объекты могут делать с ломтиком то, что они хотят.
В контексте:
x = obj[:]
Это вызовет obj.__getitem__
с переданным объектом слайса. Фактически, это полностью эквивалентно:
x = obj[slice(None,None,None)]
(хотя первый, вероятно, более эффективен, потому что ему не нужно искать конструктор slice
- все это делается в байт-коде).
Для большинства объектов это способ создания поверхностного объекта.копия части последовательности.
Далее:
x[:] = obj
Способ установки элементов (он вызывает __setitem__
) на основе obj
.
и, я думаю, вы, вероятно, можете догадаться, что:
del x[:]
вызывает; -).
Вы также можете передавать различные фрагменты:
x[1:4]
конструкции slice(1,4,None)
x[::-1]
, конструкции slice(None,None,-1)
и так далее.Дополнительное чтение: Объясните обозначение среза Python