Brython o reemplazando Javascript con Python

Introducción

Siempre he pensado que es una lástima no poder desarrollar aplicaciones en todos los soportes, sistemas operativos, web, móvil, etc, con el mismo lenguaje. ¿Por que no puedo hacer aplicaciones para Android directamente en Python, en lugar de en Java?, ¿Por que no puedo escribir código para páginas web en Python en lugar de Javascript? Pues esto último si que se puede hacer… con Bryton

0042_Selección.png

El reloj original implementado en Brython lo puedes ver funcionando en la página de Bryton

Bryton

Hasta la fecha en Javascript, he programado lo justo y necesario. Por una parte, porque hasta el momento no lo he necesitado, y por otra parte, porque Python me resulta muy cómodo e intuitivo. Hasta el momento, me he resistido con Javascript, pero es que con Brython, el tema se ha puesto enormemente complicado para Javascript…

El objetivo de Brython es reemplazar por completo Javascript por Python como un lenguaje de scripts para navegadores web. Esto dicho así, parece una bravuconada sobre todo, si tenemos en cuenta que utiliza precisamente Javascript para integración. Entiendo que esto representará un retraso en la ejecución de una página web, pero desde luego, con los equipos que hay hoy en día no debería ni notarse.

Utilizando Bryton

Un ejemplo de como escribiríamos un script para una página, empleando Brython, sería algo como lo que ves a continuación (extraído de la página original de Brython)

<html>
<head>
<script src="/brython.js"></script>
</head>
<body onLoad="brython()">
<script type="text/python">
def echo():
    alert(doc["zone"].value)
</script>
<input id="zone"><button onclick="echo()">clic !</button>
</body>
</html>

Como puedes ver en el código, es necesario llamar al script en Javascript que interpreta Brython «brython.js», y a la vez, ejecutar brython() al cargar la página. Pero, salvados estos dos puntos, ya podemos escribir los scripts directamente en Python. Una de las ventajas que tiene utilizar Brython, es que en lugar de escribir «document.getElementById(‘zone’)» tal y como haríamos en Javascript, solo tenemos que utilizar «doc[‘zone’]».

En Brython, «doc» es una palabra clave y su comportamiento es exacatamente el de un diccionario, cuyas claves se corresponde con los «ids» de los elementos. Sencillo.

Sintaxis

La sintaxis de Brython es prácticamente igual a la de Python , con algunas salvedades. Los espacios en blanco, son significantes y definen bloques. Las listas se crean con «[]» o «list()», los tuples con «()» o «tuple()», los diccionarios con «{}» o con «dict» y los conjuntos con «set()». Las funciones puede definirse como una combinación de argumentos fijos, valores por defecto, etc: «def foo(x, y=0, *args, **kw):». Actualmente no están implementadas expresiones del tipo «[ expr for item in iterable if condition ]»

Están implementadas la mayor parte de funciones de Python, aunque algunas no, como pueden ser «as assert class from is lambda nonlocal raise with yield». Como la palabra clave «class» no está implementada no puedes definir nuevas clases. Sin embargo, puedes añadir atributos a los objetos creados por «object()», por ejemplo:


x = object()
x.foo = 44
del x.foo

Así mismo, hay otras palabras clave que están implementadas en Brython, y no en Python, como pueden ser «alert», «confirm», y «prompt» que se corresponden a sus equivalentes en Javascript, «ajax» que permite la ejecución de llamadas HTTP en modo Ajax, la palabra clave «local_storage» que se corresponde con su equivalente en HTML5, y las palabras clave «win» y «doc» que representan el objeto «window» y «document» en Javascript.

Conclusiones

Para mi esto ha abierto todo un mundo de posibilidades, dentro de las propias aplicaciones que voy desarrollando, así como para este sitio. Espero en las próximas semanas mostrar avances y dar una opinión mucho mas formada sobre esta nueva posibilidad.

Más información | Brython

3 comentarios en “Brython o reemplazando Javascript con Python

    1. El atareao hace 9 años

      Gracias @google-a3341d5d1e61e2c7d037382a9b000f5a:disqus ,

      es impresionante. Estoy deseando introducir algunas novedades en mis aplicaciones para Ubuntu incluyendo Bryton

  1. JHG hace 8 años

    Lo ideal sería que python tuviera su pluging (no confundir con addons expecificos de cada navegador, sino un pluging que pueda usarlo todos los navegadores como sucede con flash o el audio) y el navegador ejecutara el código python directamente.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *