Python | Lenguage de Programación
Python Software Foundation |
Python es un lenguaje de programación interpretado
cuya filosofía hace hincapié en una sintaxis que favorezca
un código legible.
Se trata de un lenguaje de programación multiparadigma,
multiplataforma.
una licencia de código abierto, denominada Python
Software Foundation License, que es compatible con la Licencia pública general de GNU a partir de la versión 2.1.1, e incompatible en ciertas versiones anteriores.
Funciones
- Las funciones se definen con la palabra clave de
f
, seguida del nombre de la función y sus parámetros. Otra forma de escribir funciones, aunque menos utilizada, es con la palabra clavelambda
. - El valor devuelto en las funciones con
def
será el dado con la instrucciónreturn
.
def
:>>> def suma(x, y = 2):
... return x + y # Retornar la suma del valor de la variable "x"
y el valor de "y"
...
>>> suma(4) # La variable "y" no se modifica, siendo su valor: 2
6
>>> suma(4, 10) # La variable "y" sí se modifica, siendo su nuevo
valor: 10
14
lambda
:>>> suma = lambda x, y = 2: x + y
>>> suma(4) # La variable "y" no se modifica, siendo su valor: 2
6
>>> suma(4, 10) # La variable "y" sí se modifica, siendo su nuevo
valor: 10
14
Desarrollo
Desarrollar aplicaciones en python
SL4A (Scripting Layer for Android)
*Permite a los desarrolladores editar, ejecutar scripts e interactuar con intérpretes en los
dispositivos móviles.
*Es posible acceder a muchas de las API's del sistema operativo deforma cómoda.
*SL4A es opensource, se distribuye bajo licencia Apache 2.0 y soporta
otros lenguajes aparte de python: Beanshell, JRuby, Lua, Perl y Rhino.
Entornos para un desarrollo cómodo
ADB
Herramienta que viene juntocon el SDK de android y que nos permite acceder y, por lo
tanto, controlar un dispositivoandroid desde una PC.
Emulador Android
Con este emulador secargan y crean los AVD(Android Virtual Device), en
los que se especifica el hardware y la versión delsistema operativo.
Distribuir nuestros scripts al público
Generando un barcode
Este método sirve tanto para desarrollar más cómodamente como
para distribuir tu script a un público limitado (Desarrolladores)
*Generador QR online
http://zxing.appspot.com/generator/
Este es un buen método siempre y cuando tu público se dediquetambien a la programación.
Otras formas de desarrollo, kivy
Kivy es un framework/toolkit con núcleo python que nos permite desarrollar aplicaciones
multitouch para distintas plataformas (iOS, Windows, Android...)
multitouch para distintas plataformas (iOS, Windows, Android...)
http://kivy.org/docs/gettingstarted/intro.html
El proceso de empaquetamiento parece ser más cómodo y eficaz.
Características y paradigmas
Python usa tipado dinámico y conteo de referencias para la administración de memoria.
Una característica importante de Python es la resolución dinámica de
nombres; es decir, lo que enlaza un método y un nombre de variable
durante la ejecución del programa.
Otro objetivo del diseño del lenguaje es la facilidad de extensión. Se pueden escribir nuevos
módulos fácilmente en "C" o "C++". Python puede incluirse en aplicaciones que necesitan una interfaz programable.
Aunque la programación en Python podría considerarse en algunas situaciones hostil a la programación funcional tradicional del Lisp, existen bastantes analogías entre Python y los
Tipos de datos
- Mutable: si su contenido (o dicho valor) puede cambiarse en tiempo de ejecución.
- Inmutable: si su contenido (o dicho valor) no puede cambiarse en tiempo de ejecución.
Los tipos de datos se pueden resumir en esta tabla:
Tipo | Clase | Notas | Ejemplo |
---|---|---|---|
str |
Cadena | Inmutable | 'Cadena' |
unicode |
Cadena | Versión Unicode de str |
u'Cadena' |
list |
Secuencia | Mutable, puede contener objetos de diversos tipos | [4.0, 'Cadena', True] |
tuple |
Secuencia | Inmutable, puede contener objetos de diversos tipos | (4.0, 'Cadena', True) |
set |
Conjunto | Mutable, sin orden, no contiene duplicados | set([4.0, 'Cadena', True]) |
frozenset |
Conjunto | Inmutable, sin orden, no contiene duplicados | frozenset([4.0, 'Cadena', True]) |
dict |
Mapping | Grupo de pares clave:valor | {'key1': 1.0, 'key2': False} |
int |
Número entero | Precisión fija, convertido en long en caso de overflow. | 42 |
long |
Número entero | Precisión arbitraria | 42L ó 456966786151987643L |
float |
Número decimal | Coma flotante de doble precisión | 3.1415927 |
complex |
Número complejo | Parte real y parte imaginaria j. | (4.5 + 3j) |
bool |
Booleano | Valor booleano verdadero o falso | True o False |
Ventajas y Desventajas de usar Python
-
Ventajas:
- Completo conjunto de elementos gráficos (listados, arboles, grillas, etc.)
- Flexible control del comportamiento de la interface
- Rápido y de Apariencia nativa (diseñado para utilizar funciones nativas de cada plataforma)
- "Baterias Incluidas": más de 12 librerias y utilitarios complementarios (ver comparación)
- Independencia: no esta orientado a ningún entorno, ni QT ni GTK, hay una capa mas que agrega un grado de libertad adicional
- No se cierra en el mínimo denominador común; soporta las características comunes de Windows, y las emula en Linux/Mac OS cuando no se pueden hacer nativamente (y viceversa).
- Es mas "pitónico", por ej. espacio de nombres mas claro, sin referencias a C/C++, etc.
- Permite separar completamente el diseño de la interface en XML del código python
- Es fácil armar componentes personalizados, tanto que incorpora widgets que no están en wxWidgets mismo, ya que están escritos en Python.
- Documentación completa y ejemplos extensivos.
- Su lista oficial de usuarios es muy activa y amigable, donde participan los desarrolladores principales del proyecto.
-
Desventajas:
- No viene preinstalado con python, se debe instalar un paquete (wxPython en Windows y Mac OS, wxWidgets+wxPython en Linux, aunque en este último caso está generalmente está fácilmente disponible en los repositorios).
- Relativamente mas complejo de aprender
- Al tener un desarrollo bastante rápido y sostenido, se liberan versiones frecuentemente, lo que en la práctica le confiere cierto nivel de "volatilidad" y problemas de compatibilidad si se deben mantener varias versiones de wx para el mismo código.
- Es una capa más sobre el toolkit gráfico que se usa debajo (ej: GTK).
- Las características emuladas de otras plataformas no siempre se ven bien.
- Hacer interfaces multiplataformas que se vean bien requiere conocimiento del toolkit subyacente (win32, gtk).
- En proyectos medianos/grandes, puede ser inestable y dificil de debuggear: en windows es muy facil segfaultear si se pasan parámetros incorrectos.