[pyar] ¿Volvemos a empezar?

Facundo Batista facundobatista en gmail.com
Mie Abr 30 19:31:58 ART 2014


2014-04-30 19:02 GMT-03:00 Fernando Pelliccioni <fpelliccioni en gmail.com>:

> Leyendo la documentación, no me queda claro si el slice implica "recrear" el
> fragmento de la secuencia en otro pedazo de memoria o solo es una forma de
> iterar la secuencia original.

El slice es una notación sintáctica, lo que está haciendo realmente es
decirle al objeto que devuelva determinadas cosas. Es responsabilidad
del objeto decidir qué devuelve.

Todos los tipos de datos builtin de Python devuelven (cuando son
"suscribibles"), otro objeto de ese mismo tipo [0], con las
referencias a los objetos originales.

Vemos como una tupla te devuelve una tupla, y una lista te devuelve
una lista, por ejemplo:

>>> (1, 2, 3)[:1]
(1,)
>>> a = [1, 2, "foo", [6, 7]]
>>> b
['foo', [6, 7]]

Y vemos que los objetos *dentro* de esos objetos son los mismos:

>>> b[1] is a[3]
True

Un ejemplo de algo no subscribible:

>>> 3[:]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not subscriptable



> ¿Existe en Python alguna forma de verificar si algun elemento esta siendo
> copiado?
> Lo pregunto, para poder verificar mi duda.

Poder ves si dos objetos son el mismo, comparando identidad, como hice arriba.

Slds.


[0] Hay excepciones. Puntualmente me sorprendió esto:

>>> a = "supercalifragilísticoespialidoso"
>>> b = a[:]
>>> a is b
True

-- 
.    Facundo

Blog: http://www.taniquetil.com.ar/plog/
PyAr: http://www.python.org/ar/
Twitter: @facundobatista


More information about the pyar mailing list