Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
|
script:python:new:language [2013/08/26 15:59] alfred [Sintaxis] |
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 100: | 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 123: | 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 270: | 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 285: | 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 305: | 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 580: | 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 sea) estas 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 ==== | ==== Errores ==== | ||
| === Confundir variables de clase con variables de objeto === | === Confundir variables de clase con variables de objeto === | ||