Форум сайта python.su
Дорогие питонисты, столкнулся со следующей идиомой:
>>> lst = []
>>> id(lst)
11130920
>>> lst[:] = [1,2,3]
>>> id(lst)
11130920
Офлайн
здесь работает inplace изменение объекта, когда меняется само содержимое объекта, а не создается новый.
физически список копируется внутрь списка lst полностью заменяя его содержимое. Поэтому сам объект остается тем же самым.
просто lst – это получение полной копии списка.
погуглив нашел, что list literal – это из перла. выбросьте его из головы. В питоне – просто списки и срезы.
Офлайн
Да, действительно, как гласит справочное руководство по языку (http://docs.python.org/ref/assignment.html), при присваивании срезу действуют особенные правила:
If the target is a slicing: The primary expression in the reference is evaluated. It should yield a mutable sequence object (such as a list). The assigned object should be a sequence object of the same type. Next, the lower and upper bound expressions are evaluated, insofar they are present; defaults are zero and the sequence's length. The bounds should evaluate to (small) integers. If either bound is negative, the sequence's length is added to it. The resulting bounds are clipped to lie between zero and the sequence's length, inclusive. Finally, the sequence object is asked to replace the slice with the items of the assigned sequence. The length of the slice may be different from the length of the assigned sequence, thus changing the length of the target sequence, if the object allows it.Меня поначалу смутила левая часть присваивания - lst - дескать, как тут задействовано дублирование списка. А тут, как оказывается, никакого дублирования списка конструкция lst (в данном контексте присваивания) не вызывает.
Офлайн
literal – это буквально банальная константа. В питоне нет констант.
Офлайн
Чего тут спорить?
Список литералов:
http://docs.python.org/ref/atom-literals.html
Листа там нет. Зато он есть тут:
http://docs.python.org/ref/lists.html
List displays
Офлайн
DaevaornЕсли верить Wikipedia, то literal - это “Any notation for representing a value within programming language source code; for example, an object literal, string literal, or function literal.”. То, что в EBNF синтаксиса питона называется literal, на самом деле является atom (=неделимый) literal.
Чего тут спорить?
Список литералов:
http://docs.python.org/ref/atom-literals.html
Листа там нет. Зато он есть тут:
http://docs.python.org/ref/lists.html
List displays
Офлайн
если верить той же википедиа, то в питоне function literal нету.
Офлайн