Herramientas de usuario

Herramientas del sitio


script:python

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
script:python [2011/09/25 08:46]
alfred
script:python [2020/05/09 09:25] (actual)
Línea 48: Línea 48:
 ===== Orientado a objetos ===== ===== Orientado a objetos =====
 ==== Clases ==== ==== Clases ====
-  * Definimos una clase como: ''​class <​nombre>:''​ +
-  * Siempre, a cada método de la clase, debemos pasar como primer argumento la palabra '​self',​ que corresponde a sí mismo, algo así como el this de otros lenguajes. +
-  * Las propiedades de la clase son definidas mediante el self dentro de la clase. Esto es, si definimos algo así: self.prop = 4, luego podremos hacer <​objeto>​.prop,​ pero si no lo hemos definido esto nos dará error. Es cuando la definimos cuando se crea. +
-  * El método constructor por defecto en una clase sería:  +
-<code python>​ +
- def __init__ (self) +
-</​code>​ +
-  * Para crear un objeto haríamos: <​nombre>​ = <​clase>​() +
-  * Ejemplo de definición de una clase: +
-<code python>​ +
-    class cPrueba: +
-        def __init__ (self): +
-            print "​constructor"​ +
-        def method (self): +
-            print "​metodo"​ +
-        def params (self, num): +
-            print num +
-</​code>​ +
-  * Ejemplo de llamadas: +
-<code python>​ +
-    c = cPrueba () # constructor +
-    c.method() #​ metodo +
-    c.params(33) #​ 33 +
-</​code>​+
   * Para tener constructores con argumentos estos han de tener un valor por defecto, sino no furrulará:   * Para tener constructores con argumentos estos han de tener un valor por defecto, sino no furrulará:
 <code python> <code python>
Línea 91: Línea 68:
   * <​del>​El orden de llamada a los constructores en las clases que participan en la herencia es el de siempre: primero el de la base y luego el de las heredadas.</​del>​ MENTIRA!!, has de llamarlos tú: <​nowiki>​nombreBase.__init__(self))</​nowiki>​   * <​del>​El orden de llamada a los constructores en las clases que participan en la herencia es el de siempre: primero el de la base y luego el de las heredadas.</​del>​ MENTIRA!!, has de llamarlos tú: <​nowiki>​nombreBase.__init__(self))</​nowiki>​
   * Para acceder a la clase base de una derivada desde esta, no tenemos que hacer más que <​NombreClaseBase>​.<​NombreMetodo>​   * Para acceder a la clase base de una derivada desde esta, no tenemos que hacer más que <​NombreClaseBase>​.<​NombreMetodo>​
-  * Un método curioso, que haría como el .toString() de Java, sería el ''<​nowiki>​__str__</​nowiki>''​. Si en una clase definimos este método, cuando dicha clase se use como string devolverá lo que retorne dicho método: + 
-<code python>​ +
- class cClase: +
- ... +
- def __str__ (self): +
- return "​hola"​ +
- ... +
- obj = cClase() +
- print obj # hola +
-</​code>​ +
-  * Otro método es el de la documentación (''<​nowiki>​__doc__</​nowiki>''​),​ para redefinir este no tenemos que reescribir nada, únicamente debemos, después del nombre de clase, insertar un string, este será su documentación:​ +
-<code python>​ +
-    class cHi: +
-        "Clase de prueba"​ +
-        nombre = ""​ +
-     +
-    x = cHi() +
-    x.nombre = "​Pepe"​ +
-    print x.nombre # Pepe +
-    print x.__doc__ #​ Clase de prueba +
-</​code>​+
 === Notas de clases === === Notas de clases ===
   * Si metes una propiedad dentro de una clase, le das un valor, creas objetos y luego la cambias. Esa propiedad será cambiada para todos los objetos.   * Si metes una propiedad dentro de una clase, le das un valor, creas objetos y luego la cambias. Esa propiedad será cambiada para todos los objetos.
Línea 154: Línea 112:
  
  
-==== Funciones lambda ==== + 
-Una función lambda es una función sencilla de una sola línea. Estas funciones son virtuales y no tienen un nombre con el que llamarlas. Se crean, se ejecutan y desaparecen,​ pero puedes guardarlas en una variable y llamarlas desde ella. + 
-  * Sintaxis: ''​lambda <​parametro1,​ parametro2...>​ : <línea de código devuelta>''​ +
-<code python>​ +
->>>​ a = lambda x,y : x*y +
->>>​ a(3,4) +
-12 +
-</​code>​ +
-También podemos llamar a una función lambda sin almacenarla en una variable: +
-<code python>​ +
->>>​ (lambda x: x*2)(3) +
-+
-</​code>​+
 ===== Python avanzado ===== ===== Python avanzado =====
 ==== Valores booleanos ==== ==== Valores booleanos ====
Línea 266: Línea 214:
   * El módulo **gc** es el recolector de basura, puedes activarlo y desactivarlo   * El módulo **gc** es el recolector de basura, puedes activarlo y desactivarlo
   * El módulo **pickle** nos permite guardar variables de tipos de datos "​especiales"​ de python en ficheros.   * El módulo **pickle** nos permite guardar variables de tipos de datos "​especiales"​ de python en ficheros.
 +
  
  
Línea 273: Línea 222:
  
 ===== Notas ===== ===== Notas =====
-  * Los bloques de código son diferenciados por tabulaciones. 
-  * Es case sensitive. 
-  * Si programamos un script con linux la primera línea ha de ser: ''#​!/​usr/​bin/​python''​ 
   * En cualquier momento puedes poner: ''<​nowiki><>​.__doc__</​nowiki>''​ y accederás a la documentación de ese método\propiedad:​ <code python>​print string.split.__doc__</​code>​   * En cualquier momento puedes poner: ''<​nowiki><>​.__doc__</​nowiki>''​ y accederás a la documentación de ese método\propiedad:​ <code python>​print string.split.__doc__</​code>​
-  * Todos los métodos sirven para todos los objetos, ej: 
-<code python> 
- for i in range (0, len(lista)):​ 
-     print "​Elemento " + str(i) + ": " + str(lista[i]) 
-</​code>​ 
   * Parece ser que ''​None''​ equivale a ''​NULL''​.   * Parece ser que ''​None''​ equivale a ''​NULL''​.
-  * Podemos hacer: dir(<​paquete>​),​ esto nos devolverá una lista de strings con los métodos contenidos en ese paquete. 
-  * Cuando hagamos un print "​algo",​ si ponemos una coma al final no hará el salto de línea. 
   * Python es tan flexible que podemos crear una función dentro de otra y llamarla:   * Python es tan flexible que podemos crear una función dentro de otra y llamarla:
 <code python> <code python>
Línea 292: Línea 231:
         return func(a)         return func(a)
     print Func("​Aa"​)     print Func("​Aa"​)
-</​code>​ 
-  * Para realizar lo que sería una creación temporal de un objeto para llamar a un método es tan sencillo como: 
-<code python> 
-    >>>​ class A: 
-        def Func(self): 
-            print "​ahfs"​ 
- 
-    >>>​ A().Func() 
-    ahfs 
 </​code>​ </​code>​
   * Podemos trabajar con números complejos, para ello usamos la '​j'​ detrás del número: 3j ... o ... 2 + 4j   * Podemos trabajar con números complejos, para ello usamos la '​j'​ detrás del número: 3j ... o ... 2 + 4j
Línea 307: Línea 237:
   * Existe una función sumatorio, a la cual le pasas una lista y la suma: ''​sum(range(0,​10))''​   * Existe una función sumatorio, a la cual le pasas una lista y la suma: ''​sum(range(0,​10))''​
   * La función ''​mktmp()''​ del módulo tempfile devuelve una cadena con la dirección de un nombre de fichero que podría usarse como fichero temporal (que no tenga el nombre de otro).   * La función ''​mktmp()''​ del módulo tempfile devuelve una cadena con la dirección de un nombre de fichero que podría usarse como fichero temporal (que no tenga el nombre de otro).
-  * Puedes escribir strings de más de una línea usando **"""​** en vez de **"**. P.Ej: 
-<code python> 
- print """​ Hola Caracola!! 
- Qué haces aquí... 
- tan sola????"""​ 
-</​code>​ 
   * Podemos hacer que el print, en vez de imprimir por pantalla lo haga por otro canal, para ello, en el módulo sys hay una propiedad que es stdout, por ahí es por donde escribirá el print. Para escribir el print usa un método write pasandole a este un string.   * Podemos hacer que el print, en vez de imprimir por pantalla lo haga por otro canal, para ello, en el módulo sys hay una propiedad que es stdout, por ahí es por donde escribirá el print. Para escribir el print usa un método write pasandole a este un string.
   * Si creas una clase con un método write, asignas un objeto de esta a sys.stdout al hacer print se llamará a ese método.   * Si creas una clase con un método write, asignas un objeto de esta a sys.stdout al hacer print se llamará a ese método.
Línea 319: Línea 243:
 </​code>​ </​code>​
   * ''​PrintRedirect''​ es una clase que guarda el string pasado por el constructor internamente. Cuando se llama a print también se llama al método write de PrintRedirect (def write(self, msg): ...) que escribe en el fichero que se llama como el string.   * ''​PrintRedirect''​ es una clase que guarda el string pasado por el constructor internamente. Cuando se llama a print también se llama al método write de PrintRedirect (def write(self, msg): ...) que escribe en el fichero que se llama como el string.
-  * Para omitir los \n, \t... en python debemos colocar una '​r'​ antes del string: 
-<code python>​str = r"​c:​\windows\nvidia"</​code>​ 
-  * Podemos ver el id de un objeto/​variable haciendo: ''​id(objeto)''​ 
   * Para copiar un objeto lo que debemos hacer es usar el método copy del módulo copy:   * Para copiar un objeto lo que debemos hacer es usar el método copy del módulo copy:
 <code python> <code python>
Línea 332: Línea 253:
   * Puedes acceder al nombre de la clase de un objeto haciendo:   * Puedes acceder al nombre de la clase de un objeto haciendo:
 <code python>​obj.__class__</​code>​ <code python>​obj.__class__</​code>​
-  * Puedes dividir una línea de código en varias colocando \ al final: 
-<code python> 
- >>>​ print \ 
- "​manolo"​ 
- manolo 
-</​code>​ 
-  * En Windows puedes tener varias versiones de Python instaladas, solo que únicamente una podrá hacer un ''​Register Extensions'',​ es decir, ser la oficial del sistema. 
   * A Python también se le llama ''​CPython'',​ es la implementación por defecto del lenguaje y está escrita en C, además de este existen otros dos desarrollos importantes,​ el de Java (''​Jython''​) y el de .NET ([[fw:​ironpython:​ironpython|IronPython]]).   * A Python también se le llama ''​CPython'',​ es la implementación por defecto del lenguaje y está escrita en C, además de este existen otros dos desarrollos importantes,​ el de Java (''​Jython''​) y el de .NET ([[fw:​ironpython:​ironpython|IronPython]]).
-  * Si en windows quieres ejecutar un script en Python sin que se muestre la consola únicamente has de hacerlo ejecutandolo desde ''​pythonw.exe''​ en vez de desde el ''​python.exe''​. O cambiando su extensión de ''​.py''​ a ''​.pyw''​. 
script/python.1316940405.txt.gz · Última modificación: 2020/05/09 09:24 (editor externo)