Herramientas de usuario

Herramientas del sitio


script:python:new:language

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:new:language [2013/08/13 15:05]
alfred [Clases New & Old Style]
script:python:new:language [2020/05/09 09:25] (actual)
Línea 12: Línea 12:
 e = True # Crea una variable booleana e e = True # Crea una variable booleana e
 del a # Elimina de memoria la variable a  del a # Elimina de memoria la variable a 
 +a, b = 3, 4 # a = 3, b = 4
 </​code>​ </​code>​
 Pequeños tips en la asignación de variables: Pequeños tips en la asignación de variables:
Línea 26: Línea 27:
 else: else:
   print "i no es 3"   print "i no es 3"
 +</​code>​
 +
 +<code python>
 +show () if a == 1 else noshow()
 </​code>​ </​code>​
  
Línea 96: Línea 101:
 </​code>​ </​code>​
   * ''​var1 is var2''​ devuelve ''​True''​ si la referencia de ''​var1''​ es la misma que la de ''​var2''​.   * ''​var1 is var2''​ devuelve ''​True''​ si la referencia de ''​var1''​ es la misma que la de ''​var2''​.
- 
- 
 ==== Funciones ==== ==== Funciones ====
 === Función básica === === Función básica ===
Línea 120: Línea 123:
 def testArgDir(**kwargs):​ #​ A esta la llamaríamos con un diccionario:​ "​testArgDir(arg1='​ccc',​ arg2='​ddd'​)"​.... def testArgDir(**kwargs):​ #​ A esta la llamaríamos con un diccionario:​ "​testArgDir(arg1='​ccc',​ arg2='​ddd'​)"​....
   print '​kwargs:',​ args # Mostraría "​kwargs:​ {'​arg1':​ '​ccc',​ '​arg2':​ '​ddd'​}   print '​kwargs:',​ args # Mostraría "​kwargs:​ {'​arg1':​ '​ccc',​ '​arg2':​ '​ddd'​}
 +# también podríamos llamarla: testArgDir(**{'​arg1':​ '​ccc',​ '​arg2':​ '​ddd'​})
 </​code>​ </​code>​
 === Combinación de diccionario y lista === === Combinación de diccionario y lista ===
Línea 267: Línea 271:
   * Para agregar un nuevo elemento: ''​lista["​nuevoNombre"​] = valor''​   * Para agregar un nuevo elemento: ''​lista["​nuevoNombre"​] = valor''​
   * Para saber si la clave existe mediante el método ''​has_key()''​ o con el ''​in''​.   * Para saber si la clave existe mediante el método ''​has_key()''​ o con el ''​in''​.
 +  * Puedes pasar un diccionario como argumentos ''<​nowiki>​**kwargs</​nowiki>''​ precediendole ''<​nowiki>​**</​nowiki>''​.
 <code python> <code python>
 if lista.has_key(2):​ if lista.has_key(2):​
Línea 282: Línea 287:
 <code python> <code python>
 del d['​name'​] del d['​name'​]
 +</​code>​
 +
 +Para crear un diccionario a partir de la función dict:
 +<code python>
 +dict(akey='​avalue',​ bkey=3)
 +</​code>​
 +
 +Para recorrer clave\valor en los diccionarios:​
 +<code python>
 +for (k, v) in mydict.items():​
 +    print k, v
 </​code>​ </​code>​
  
Línea 302: Línea 318:
   * Podemos desordenar una lista haciendo ''​random.shuffle(l)''​.   * Podemos desordenar una lista haciendo ''​random.shuffle(l)''​.
   * Podemos convertir otros tipos a tupla o lista haciendo ''​list()''​ o ''​tuple()''​. Como por ejemplo una lista a partir de una secuencia (p.ej. una tupla): ''​list(getAllLines())''​.   * Podemos convertir otros tipos a tupla o lista haciendo ''​list()''​ o ''​tuple()''​. Como por ejemplo una lista a partir de una secuencia (p.ej. una tupla): ''​list(getAllLines())''​.
- 
  
 ==== Características del lenguaje ==== ==== Características del lenguaje ====
Línea 577: Línea 592:
 ===== Notas ===== ===== Notas =====
 ==== Cómo ==== ==== Cómo ====
-=== Comprobar ​el tipo de una variable ​===+ 
 + 
 +=== Saber el directorio del módulo actual ​===
 <code python> <code python>
-type(o) is str +import os 
-isinstance(o, str)+path = os.path.dirname(__file__) 
 +</​code>​ 
 +O de un módulo concreto: 
 +<code python>​ 
 +import a_module 
 +print a_module.__file__
 </​code>​ </​code>​
  
-Saber si es una subclase:+=== Escribir por la consola de error ===
 <code python> <code python>
-issubclass(type(o), str)+import sys 
 +sys.stderr.write('​Writing error!'​)
 </​code>​ </​code>​
  
-Para comprobar si es un string ​(del que seaestas dos son válidas:+=== Detectar cuando sale el programa === 
 +Registraremos una función ​(''​savecouter''​con atexit:
 <code python> <code python>
-isinstance(o,​ basestring) +import atexit 
-isinstance(o, ​(str, unicode))+atexit.register(savecounter)
 </​code>​ </​code>​
 +También lo podemos hacer con un decorador en ''​savecounter'':​ ''​@atexit.register''​. \\ 
 +''​atexit''​ no llamará cuando...
 +  * El programa se acaba debido a un ''​signal''​.
 +  * ''​os._exit()''​ se invoca directamente.
 +  * Se lanza un error fatal en el intérprete.
  
 +=== Testear la sintaxis de un script ===
 +<​code>​
 +$ python -m py_compile script.py
 +</​code>​
  
 +=== Checkear el estilo de un script ===
 +  * Mediante el script [[https://​pypi.python.org/​pypi/​pep8|pep8.py]]
 +  * Online, en: [[http://​pep8online.com/​]]
 +==== Errores ====
 +=== Confundir variables de clase con variables de objeto ===
 +<code python>
 +class A:
 + value = []
 +a = A()
 +a.value.append(1)
 +b = A()
 +b.value.append(2)
 +print b.value ​ # [1, 2]
 +</​code>​
  
 +=== Utilizar un mutable (lista, diccionario) como valor por defecto ===
 +<code python>
 +def test (a=[]):
 + a.append(1)
 + print a
 +
 +test() # [1]
 +test() # [1, 1]
 +test() # [1, 1, 1]
 +</​code>​
 ==== Notas ==== ==== Notas ====
 === Utilizar una codificación específica dentro del script === === Utilizar una codificación específica dentro del script ===
script/python/new/language.1376406355.txt.gz · Última modificación: 2020/05/09 09:24 (editor externo)