development:python:thinkpython

Diferències

Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.

Enllaç a la visualització de la comparació

Ambdós costats versió prèvia Revisió prèvia
Següent revisió
Revisió prèvia
development:python:thinkpython [04/06/2019 09:01] – [nombres fichero y paths] matedevelopment:python:thinkpython [10/06/2022 02:27] (actual) – [think python] mate
Línia 1: Línia 1:
 = think python = think python
 +{{tag>python}}
 == cadenas == cadenas
 +  * inmutables
 +  * ''<string>[char]''
 +    * -1 : last
 +    * -2 : pre-last
 +  * ''<string>[pos1:pos2]''
 +  * ''<string>[:pos2]'', ''<string>[pos2:]'',''<string>[-pos2:]''
   * ''<string>.capitalize()''   * ''<string>.capitalize()''
   * ''<string>.isupper()''   * ''<string>.isupper()''
Línia 8: Línia 14:
     * se puede pasar por parámetro el delimitador     * se puede pasar por parámetro el delimitador
   * ''<delimitador>.join(<lista>)'': junta los elementos de la lista, poniendo en medio el delimitador (!!)   * ''<delimitador>.join(<lista>)'': junta los elementos de la lista, poniendo en medio el delimitador (!!)
 +  * ''len(string)''
  
 == list == list
Línia 18: Línia 25:
     * ''for i in numeros:''     * ''for i in numeros:''
     * ''for i in range(len(mixta)):''     * ''for i in range(len(mixta)):''
 +      * ''range(num)'': genera progresión aritmética de 0 a num
 +      * ''range(inicio,fin[,salto])''
   * concatenación: ''otra_mixta = cadenas + numeros'' -> ['uno','dos','tres','cuatro','cinco',1,2,3]   * concatenación: ''otra_mixta = cadenas + numeros'' -> ['uno','dos','tres','cuatro','cinco',1,2,3]
   * multiplicativo: ''numeros * 2'' -> [1,2,3,1,2,3]   * multiplicativo: ''numeros * 2'' -> [1,2,3,1,2,3]
Línia 55: Línia 64:
 == Tuplas == Tuplas
   * secuencia de valores, separados por coma, inmutables   * secuencia de valores, separados por coma, inmutables
-  * ''tupla = 'a','b','c','d'''+  * ''tupla = 'a','b','c','d' ''
   * ''tupla = ('a','b','c','d')''   * ''tupla = ('a','b','c','d')''
   * ''tupla = 'a','' <- nótese la coma final   * ''tupla = 'a','' <- nótese la coma final
Línia 106: Línia 115:
  
 === catch exceptions === catch exceptions
 +<code python>
 +try:
 +    fin = open('fichero_no_existente')
 +    for line in fin:
 +        print line
 +    fin.close()
 +except:
 +    print "Error"
 +</code>
 +
 +=== databases
 +  * ''import anydbm''
 +    * solo soporta strings -> uso de pickling
 +  * ''db = anydbm.open('captions.db','c')''
 +    * 'c' : crear si no existe aún
 +  * uso como diccionario
 +    * asignación
 +    * recorridos: key,items
 +  * ''db.close()''
 +
 +=== pickling
 +  * para superar la limtación de **anydbm** de trabajar solo con strings, usamos el módulo **pickle**
 +  * convierte casi cualquier cosa a una representación en string y viceversa
 +  * ''import pickle''
 +  * ''pickle.dumps(<anything>)''
 +  * ''pickle.loads(<string>)''
 +  * módulo shelve ??
 +
 +=== Pipes
 +  * cualquier comando que se pueda lanzar desde la shell se puede lanzar como un **pipe** en python
 +  * ''os.popen('ls -l')'' : **popen** está deprecado a favor de **subprocess**
 +  * <code python>
 +filename = 'book.tex'
 +cmd = 'md5sum ' + filename
 +fp = os.popen(cmd)
 +res = fp.read()
 +stat = fp.close() // devuelve None si todo correcto
 +// res contiene el resultado del comando
 +</code>
 +
 +=== Modulos
 +  * cualquier fichero que contenga código python puede ser importado como un módulo
 +  * normalmente solo se definen funciones, otro código sería ejecutado
 +  * para evitar la ejecución de ese código cuando el programa se usa como módulo, se añade: <code python>if __name__ == '__main__':
 +codigo</code>
 +     * ''__name__'' es una variable interna que se setea al arrancar el programa. Contiene **__main__** si se ejecuta como script
 +   * un módulo que se importa una vez no puede ser reimportado, aunque haya cambiado
 +   * para eso, usar ''reload'', pero parece no ser muy estable o deseado
 +
 +== Clases y objetos
 +<code python>
 +class Point(object):
 +    attributes: x,y
 +    
 +class Rectangle(object):
 +    attributes: width,height,corner
 +    
 +box = Rectangle()
 +box.width = 100.0
 +box.height = 200.0
 +box.corner = Point()
 +box.corner.x = 0.0
 +box.corner.y = 0.0
 +</code>
 +
 +  * ''import copy'' : copia objetos (aunque no objetos dentro del objeto si los hubiese, así que ese objeto embebido sería el mismo para los 2 objetos creados a través de **copy.copy**) -> usar **copy.deepcopy**
 +
 +== Clases y funciones
 +  * funciones puras: no modifican los objetos
 +  * funciones modificadoras : lo contrario
  
 +== Clases y métodos (17)
  
 == otros == otros
  • development/python/thinkpython.1559664094.txt.gz
  • Darrera modificació: 04/06/2019 09:01
  • per mate