En el presente trabajo se busca comenzar a explorar python mediate preguntas, yendo además de lo general a lo particular.
Primero se veran todos los métodos y atributos de las cadenas de caracteres(string), listas(list), tuplas(tuple) y conjuntos (set). Con el método dir(x), en donde x será alguna de las cadenas mencionadas anteriormente, se despliegan por orden alfabetico los métodos y atributos de x.
Definimos entonces similarmente las x:
In [19]:
palabra = 'aeiou'
lista = ['a','e','i','o','u']
tupla = ('a','e','i','o','u')
conjunto = {'a','e','i','o','u'}
Ahora mostramos todos los métodos y atributos de los objetos de arriba
In [20]:
print('Los metodos y atributos del objeto palabra son:', dir(palabra))
In [21]:
print('Los metodos y atributos del objeto lista son:', dir(lista))
In [22]:
print('Los metodos y atributos del objeto tupla son:', dir(tupla))
In [23]:
print('Los metodos y atributos del objeto conjunto son:', dir(conjunto))
Ahora podríamos preguntar (aunque supuestamente ya lo sabemos) ¿que tipo de objeto son? con type(x), o bien si tendríamos alguna sospecha ¿es de tipo (P ej) string x?, con isinstance(string,x)
In [24]:
print(type(palabra), type(lista), type(tupla), type(conjunto))
In [25]:
isinstance(palabra,str)
#isinstance(lista,list)
#isinstance(tupla,tuple)
#isinstance(conjunto,set)
Out[25]:
In [26]:
metatr_str=set(dir(palabra))
metatr_lista=set(dir(lista))
metatr_tupla=set(dir(tupla))
metatr_conjunto=set(dir(conjunto))
In [27]:
print(metatr_str)
Podríamos preguntar ¿Cuáles son los métodos y atributos que son propios de una cadena de caracteres pero no de una lista? Esto sería algo así cómo lo que caracteriza a una cadena de caracteres
In [28]:
metatr_str - metatr_lista
Out[28]:
Podríamos preguntar ¿Cuales son los métodos y atributos comunes entre listas y strings? Sería algo así cómo lo que caracteriza a una cadena
In [29]:
metatr_str.intersection(metatr_lista)
Out[29]:
Podemos recurrir al help de ipython para preguntar someramente que hace especificamente cada método o atributo:
In [30]:
help(palabra.find)
Si queremos ver la diferencia entre una lista y una tupla:
In [31]:
metatr_lista - metatr_tupla
Out[31]:
Vemos que justamente una lista es una tupla que se puede modificar
Si queremos comparar una lista y un conjunto:
In [32]:
metatr_conjunto - metatr_lista
Out[32]:
Aqui podemos ver los métodos y atributos propios de un conjunto, los cuales podríamos explorar con el help(x)
Si hacemos la diferencia al revés, veremos que una lista tiene los métodos propios de un ordenn algo que no tiene un conjunto(), o incluso un diccionario, que también es un conjunto:
In [33]:
metatr_lista - metatr_conjunto
Out[33]:
Podemos también descubrir que existen cosas un tanto extrañas de python, dada la recursividad de dir(x):
In [34]:
dir(palabra.__add__)
Out[34]:
In [35]:
dir(palabra.__add__.__call__)
Out[35]:
In [36]:
dir(palabra.__add__.__call__.__cmp__)
Out[36]: