Sebastian Bassi: Video de intro a Python

   Publicado:

Este video fue filmado en Junin en Univ. Nac. del Noroeste. Es una charla introductoria a Python





Carlos Joel Delgado Pizarro: Variables – Parte 3

   Publicado:

En esta parte me enfocaré a lo que se conoce como «Tipado dinámico» de las variables, ya que Python es un lenguaje de «Tipado Dinámico» y además «Fuertemente Tipado», lo que veremos a continuación:

Tipado Dinámico

Esta característica se refiere a que no es necesario declarar el tipo de dato que se almacenan en las variables, como en el caso de otros lenguajes, sino que su tipo se determinará en tiempo de ejecución, de acuerdo al valor que se le asigne, así que es posible que el tipo de la variable cambie de acuerdo al valor que se le asigne, por ejemplo, vemos el siguiente código:

#!/usr/bin/env python
a = 5 # "a" guarda un valor entero
print a, type(a)
a = "hola" # ahora "a" guarda una cadena
print a, type(a)
a = 5.4 # ahora "a" guarda un valor float
print a, type(a)
a = (4+2j) # ahora "a" guarda un valor del tipo complejo
print a, type(a)

Un ejemplo gráfico para que sea más entendible :-) :

a = 5

asignamos el valor entero “5” a la variable “a”

a = “hola”

asignamos la cadena “hola” a la variable “a”, que antes apuntaba a un valor entero, el cual al quedar libre es borrado de la memoria.

Como la variable “a” no fue “ declarada” para ser de ningún tipo, osea que no se declaro explícitamente que “a” sea de tipo entero o cadena o real o algún otro tipo, puede guardar el valor que se le asigne, pero eso sí, es un lenguaje fuertemente tipado, es decir que no podemos mezclar diferentes tipos de variables.

Fuertemente Tipado

La característica de «Fuertemente Tipado» se refiere a que una vez que una variable guarda un valor, no se puede tratar a dicho valor como si fuera de otro tipo, es decir no se pueden realizar operaciones entre variables o valores de diferentes tipos, ejemplo: si tenemos una variable que guarda el numero entero 9, no podemos sumarle un valor del tipo cadena como “ 5”, pero en otros lenguajes si es posible ya que las variables cambiarían para adaptarse a la operación deseada, pero esto es más propenso a errores en una programación más extensa, si queremos tener ese comportamiento con nuestras variables en Python, es necesario«mutarlas»explícitamente, ejemplo en código:

#!/usr/bin/env python
a = 9 # valor entero
b = "5" # valor entero
c = a + b # no se puede realizar esta operacion
print c

al detectar esto, Python mostrará un mensaje como este:

Traceback (most recent call last):
File “var3ejem2.py”, line 4, in <module>

c = a + b # no se puede realizar esta operacion

TypeError: unsupported operand type(s) for +: ‘int’ and ‘str’

es decir que la operación “+” no está soportada para actuar con variables del tipo int y str (entero y cadena)

Mutación de variables

Si queremos sumar los valores de dos cadenas o un número con una cadena, ejemplo “5” + “9” o 5 + “9” debemos de convertir la cadena al tipo del número, ya sea entero o real o cualquier otro tipo numérico. Para eso se utilizan las funciones que Python trae, ejemplo:

#!/usr/bin/env python
a = 5 # la variable "a" guarda un valor entero
b = "9" # la variable "b" guarda una cadena
c = a + int(b) # con la funcion int() convertimos
               # la cadena un entero
print c

y así podemos mutar las variables para que se comporten de la manera que queremos, pero ojo, que luego “b” sigue siendo una cadena, si queremos que sea un entero para el resto del código, simplemente la reasignamos con el nuevo valor.

b = int(b)


Pablo Benjamín Arroyo: GO - Lenguaje de programacion

   Publicado:

Google sorprendio con su nuevo lenguaje de programacion:




Google anuncia que entra al juego de los lenguajes de programación, se llama Go: es de fuente abierta, experimental y combina las ventajas de desempeño de un lenguaje compilado como C++ sumado a la velocidad de un lenguaje dinámico como Python.

En Google son fanáticos de Python, muchas de sus servicios son hechos en este lenguaje; en abril de 2009 Techreporter hacía un artículo de cómo su creador, Guido van Rossum, que ahora trabaja en la empresa se ha dedicado a mejorar el desempeño de las aplicaciones reemplazando el interpretador por uno más eficiente basado en LLVM. Pero seguramente vuelven a llegar a un límite de velocidad que no es alcanzable a menos que se compile; crear un nuevo lenguaje que combine estas dos ventajas parece ser el paso natural (aunque el más difícil).

Para los curiosos en interesados en Go, Google ha creado golang.org donde hay detalles técnicos, preguntas frecuentes y un video de una hora explicando cómo funciona.


Un video (ingles)




LINK-INFO
Instalarlo



Bookmark and Share

Carlos Joel Delgado Pizarro: Variables – Parte 2

   Publicado:

 

Ya vimos los tipos básicos de datos en Python, los cuales hemos llamado «variables», pero en realidad ese no es el nombre correcto en Python, lo correcto es « nombres» o «etiquetas»; pero, para no salir de la terminología común, la cual es entendida por todo el mundo, vamos a seguir llamándolos «variables», pero debemos tener en cuenta:

Los otros lenguajes (la mayoría) tienen «variables», a las que se les asigna valores, por ejemplo:

Declaración de variables en Java o C#:

int a = 5;

Declaración de variables en Basic:

Dim a as Integer= 5

y así cada lenguaje tiene su manera de declarar variables…

 

¿Qué quiere decir esto?

Que al momento de declarar una variable, se crea un espacio en la memoria que se comporta como una caja, en donde se almacenan los valores asignados.

 

Al declarar la variable “a” se tiene:

int a = 5;

 

 

Si le asignamos otro valor a la variable “a”, el valor anterior es sobrescrito, por ejemplo

a = 8;

 

Si declaramos otra variable “b”, y le asignamos el valor de “a”, esto crea una copia del contenido de “a” en “b”.

int b = a;

Luego, el valor de “b” es independiente al valor de “a”.

 

En Python se usan “nombres” o “etiquetas”

 

Como en Python «todo es un objeto», este comportamiento es algo diferente, Python tiene «nombres» o «etiquetas».

Al hacer:

a = 5, estamos etiquetando al objeto entero “5” con “a”

 

Si asignamos un nuevo valor a “a”, por ejemplo:

a = 8, estamos colocando la etiqueta “a” a un nuevo objeto.

Y el objeto 5 queda libre, puede seguir existiendo en la memoria, pero como nadie hace referencia a él, es borrado.

Si creamos una nueva etiqueta “b” y le asignamos el valor de “a”, osea:

b = a, estamos agregando otra etiqueta al mismo objeto al que “a” hace referencia.

 

Esto significa eficiencia en el uso de memoria, pero si cambiamos el valor de “a”, por ejemplo hacemos una operación aritmética, como restarle 1

a = a – 1

al hacer esto se está creando un nuevo objeto y se etiqueta con “a”, entonces tendremos dos objetos diferentes con etiquetas independientes.

 

Espero que no haya dudas sobre como Python maneja las “etiquetas”, pero para evitarnos complicaciones más adelante, sigamos llamándolas «variables» :-).

Dale una revisada al siguiente código:

a = 5 # se etiqueta el objeto entero 5 con "a"

print a # muestra el objeto de "a"

a = 8 # se etiqueta otro objeto con "a"

b = a # se agrega la etiqueta "b" al objeto de "a"

print b # se muestra el objeto de "b"

a = a – 1 # se modifica el valor del objeto de "a"

print a # se muestra el objeto de "a"

print b # se muestra el objeto de "b", que ahora es independiente

El mismo código con una «traducción más común» de los comentarios:

a = 5 # se crea la variable entera "a" y se guarda el valor "5"

print a # muestra el valor de "a"

a = 8 # se guarda un nuevo valor en "a"

b = a # se crea la variable "b" donde guarda el valor de "a"

print b # se muestra el valor de "b"

a = a – 1 # se modifica el valor de "a"

print a # se muestra el valor de "a"

print b # se muestra el valor de "b"


Francisco Malbrán: Postdata

   Publicado:

En un mundo ideal, las cosas serían de otra manera.
Serían como Uno quisiera que sean.
Surge la pregunta entonces...


¿quién es Uno?

Mario Zorz: MOMO Tech Talks: Android as a development platform

   Publicado:

MOMO Buenos Aires presents:

Android as a development platform

Meet industry leaders to discover the Android platform and state-of-the-art Android devices.

Buenos Aires, November 3rd, 2009.- Mobile Monday Buenos Aires (www.momobuenosaires.com) invites you to the second MOMO Tech Talks event. This event will take place next Monday, November 16th at 7 PM at the Aula Magna at the Facultad Regional Buenos Aires de la Universidad Tecnológica Nacional (UTN), Medrano 951, Ciudad Autónoma de Buenos Aires.

This event will be fully dedicated to Android, the new operating system built by Google, with the aim to provide professionals with the latest news and information about this exciting development platform. The event will be attended by two outstanding speakers. James YUM, team member of the Android Development Program team at Google, USA, and German Greco, Regional Product Manager at Motorola. Yum will offer his talk: “Inside the Android Application Framework”. Greco, on the other hand, will refer to “The next generation of Android phones”.

Moreover, a selected group of local developers will showcase their Android-based projects.

The event is free for everyone. However, there’s limited space at the venue, so previous registering is required. You can register by completing the registration form at Mobile Monday Buenos Aires website (www.momobuenosaires.com) or at http://tinyurl.com/momotechtalks

This event wouldn’t be possible without the support of Universidad Tecnológica Nacional (UTN), Facultad Regional Buenos Aires.

Main Sponsors: Buongiorno, Gemalto, IKEN, Banco Galicia, El Cronista, CodaMation, Disney Mobile Studios, Turner, and MTV.

About MobileMonday TechTalks

Open to each and every actor in the country’s mobile industry, the event series will be highly oriented to whom are considered the major figures in innovative mobile applicacion and services development, thus proposing both a monthly space to share experiences with colleagues and a virtual community to facilitate communication among them.

About MobileMonday

MobileMonday Buenos Aires (www.momobuenosaires.com) is the argentine chapter of MobileMonday, the global community grouping innovators, visionaries and executives from the international mobile industry.

Mobile Monday is a global community of mobile industry visionaries, developers and influentials fostering cooperation and cross-border business development through virtual and live networking events to share ideas, best practices and trends from global markets. It counts with more than 110.000 industry professionals who gather regularly in the 60 most important cities of the world. Mobile Monday is organized by a group of dedicated volunteers from around the world. The organization produces more than 700 events per year around the world. Each chapter has a local website, which altogether forms the www.mobilemonday.net network.

For further press information:

+54 11 4961 6172 or +54 11 4962 1856; rsvp@momobuenosaires.com; press@momobuenosaires.com


Carlos Joel Delgado Pizarro: Variables en Python

   Publicado:

En Python los tipos básicos para las variables se dividen en:

  • Números: enteros (123), reales o coma flotante (-43.23) y complejos (4 + 3j), en Python la parte imaginaria de un número complejo se representa con j y no con i como es matemáticamente.
  • Cadenas de texto: “Hola”, “abc123″.
  • Valores booleanos: True (cierto) y False (falso).

Vamos a crear un par de variables a modo de ejemplo. Una de tipo cadena y una de tipo entero:

# en la variable cadena guardamos una cadena
cadena = "Hola"
# y en entero un número entero
entero = 23
# lo comprobamos con la función type
print type(cadena)
print type(entero)

El resultado será:

<type ‘str’>
<type ‘int’>

Lo que indica que la variable cadena es del tipo str, que es lo mismo que string o cadena, y la variable entero es del tipo int, que significa integer o entero.

Además vemos que los comentarios en Python se indican con el signo #, pero existen más formas de insertar comentarios, lo que veremos más adelante.

Enteros

En Python los enteros son int (tipo integer o entero) o long (tipo de entero largo).

En Python, utilizando el tipo int podemos almacenar números de -231 a 231 – 1, o lo que es lo mismo, de -2.147.483.648 a 2.147.483.647, eso en plataformas de 32bits. En plataformas de 64 bits, el rango es de -9.223.372.036.854.775.808 hasta 9.223.372.036.854.775.807 Para declarar un tipo entero o int es suficiente asignar un número entero a una variable, ejemplo:

entero = 23

Para declarar un tipo entero largo o long hay que añadir la letra L al final del número

entero = 23L

También se puede expresar la variable como un octal, anteponiendo un cero:

# 027 octal = 23 en base 10
entero = 027

o bien en hexadecimal, anteponiendo un 0x:

# 0×17 hexadecimal = 23 en base 10
entero = 0×17

Reales

Son los números que tienen decimales, en Python se representan con el tipo float, Python siempre se utiliza este tipo de variables con doble precisión (tipo double en lenguaje C), y en concreto se sigue el estándar IEEE 754: 1 bit para el signo, 11 para el exponente, y 52 para la mantisa. Esto significa que los valores que podemos representar van desde ±2,2250738585072020×10-308 hasta ±1,7976931348623157×10308, para asignar este tipo de números se escribe la parte entera y luego la parte decimal, ejemplo:

real = 25.85
real = 19.00

También es posible utilizar la notación científica, por ejemplo:

real = 19.886e-7

Lo que sería igual a decir: 0.0000019886

Complejos

Son los números que tienen parte imaginaria, en Python este tipo es conocido como complex, y se asigna a una variable de la siguiente manera:

complejo = 4.2 + 2.5j

Nótese nuevamente que la parte imaginaria se representa con la letra j.

Cadenas

Es el conjunto de letras o números encerrados entre comillas dobles (“texto”) o comillas simples (‘texto’) las cuales pueden contener caracteres especiales como \n para saltar a una línea nueva o \t para agregar un espacio de tabulación.

texto = "Hola mundo" # El resultado se mostrará en una sola linea
texto = "Hola\nmundo" # El resultado se mostrará en dos lineas distintas

También se puede poner texto entre triples comillas, lo cual, al momento de presentarlo o escribirlo en la consola, respetará los saltos de línea sin necesidad de utilizar \n

triple = """Esta es una línea
y esta es otra línea"""

Las cadenas admiten las operaciones + y * para concatenación, ejemplo

a = “uno”
b = “dos”
c = a * 3
print a + b
print c

el resultado será

unodos
unounouno

Booleanos

Las variables de tipo bool en Python (y todos los otros lenguajes) almacenan dos valores: True y False, solo que en Python el tipo bool es una subclase del tipo int, es decir que True vale 1 y False vale 0, algo curioso, ya que si haces:

a = True + True

El resultado será 2

Prueba con lo siguiente y fíjate en el resultado.

a = True + True
b = True
print a
print type(a)
print b
print type(b)

Vemos que el valor de a es 2 y su tipo es int, y el valor de b es True y su tipo es bool, esto se debe, como ya dije, a que el tipo bool es una subclase del tipo int.


Carlos Joel Delgado Pizarro: Primer encuentro con Python

   Publicado:

Primer encuentro con Python

Si eres de los que todavía utilizan Windows®, debes instalar el interprete de Python, el cual puedes obtenerlo desde la página oficial de Python http://www.python.org.

Si utilizas GNU/Linux lo más probable (casi seguro) es que Python ya esté instalado, y si no lo está, puedes instalarlo fácilmente utilizando el gestor de paquetes de tu distribución, o también bajándolo desde la página oficial de Python; en otros sistemas operativos Unix y compatibles (MacOSX, oSolaris, etc.) Python también puede encontrarse ya instalado, y también puede ser instalado fácilmente.

Para empezar a programar es suficiente un editor de texto sencillo, guardar nuestro código con la extensión .py y luego ejecutarlo con el interprete.

El instalador para Windows® viene con IDLE, un entorno de desarrollo para Python.

Tanto para Windows®, GNU/Linux y demás sistemas Unix podemos instalar PyDEV que es uno de los mejores IDEs (entornos de desarrollo) para Python, bueno, en realidad PyDEV es un complemento (plugin) que puede ser instalado en Eclipse o Aptana, por lo que primero debemos instalar Eclipse o Aptana y luego instalar PyDEV, o podemos utilizar EasyEclipse para Python, que es una modificación de Eclipse y que además tiene una distribución que ya viene con PyDEV instalado. PyDEV cuenta con autocompletado de código (con información sobre cada elemento), resaltado de sintaxis, un depurador gráfico, resaltado de errores, explorador de clases, formateo del código, refactorización, etc.

EasyEclipse se puede descargar desde http://www.easyeclipse.org/site/distributions/python.html

En GNU/Linux para asegurarse que tiene Python instalado abra una terminal y escriba el comando python, el cual llama al intérprete, debería ver lo siguiente:

~$ python

Python 2.6.4rc2 (r264rc2:75497, Oct 20 2009, 02:54:09)

[GCC 4.4.1] on linux2

Type “help”, “copyright”, “credits” or “license” for more information.

>>>

Los 3 signos >>> indican que el interprete está activo y esperando ordenes. Para salir del interprete solo se debe escribir exit() o presionar las teclas Ctrl+D.

Prueba escribiendo:

print "Hola mundo, este es mi primer programa en Python"

También puedes crear un documento de texto nuevo o utilizar Pydev y escribir la misma línea de código, luego guardar el archivo como Hola.py y ejecutarlo con el intérprete

~$ python hola.py

y acabas de hacer tu primer programa en python.

Si utilizas Windows® los archivos .py ya estarán asociados al intérprete de Python, por lo que basta hacer doble clic sobre el archivo para ejecutar el programa. Sin embargo como este programa no hace más que imprimir un texto en la consola, la ejecución es demasiado rápida para poder verlo. Para remediarlo, vamos a añadir una nueva línea que espere la entrada de datos por parte del usuario.

print "Hola mundo, este es mi primer programa en Python"

raw_input()

De esta forma se mostrará una consola con el texto hasta que se presione la tecla Enter.

Si utilizas Linux (u otro Unix) para conseguir este comportamiento, es decir, para que el sistema operativo abra el archivo .py con el intérprete adecuado, es necesario añadir una nueva línea al principio del archivo:

#!/usr/bin/env python

print "Hola mundo, este es mi primer programa en Python"

raw_input()

A esta línea se le conoce en el mundo Unix como shebang, hashbang o sharpbang. El par de caracteres #! indica al sistema operativo que dicho script se debe ejecutar utilizando el intérprete especificado a continuación. De esto se desprende, evidentemente, que si esta no es la ruta en la que está instalado nuestro intérprete de Python, es necesario cambiarla.

Por supuesto además de añadir el shebang, tendremos que dar permisos de ejecución al programa.

chmod +x hola.py

Y listo, si hacemos doble clic el programa se ejecutará, mostrando una consola con el texto Hola mundo, este es mi primer programa en Python, como en el caso de Windows®.

También podríamos correr el programa desde la consola como si tratara de un ejecutable cualquiera:

./hola.py

Ahora, si queremos insertar texto con caracteres especiales, es decir, tildes, eñe «ñ» y otros simbolos, debemos agregar la siguiente linea a nuestro programa, justo debajo del sharpbang:

# -*- coding: UTF-8 -*-

Con esa declaración, todos los caracteres serán reconocidos y no tendremos errores de caracteres no admitidos al ejecutar nuestro programa.


Mario Zorz: MoMo Buenos Aires Tech Talks is a success

   Publicado: via www.movilsur.com.ar

Different to the traditional MobileMonday Buenos Aires meetings, the first MoMo TechTalk meeting performed yesterday at the UTN (Universidad Tecnológica Nacional) had a more intimate and interactive tone, more often seen in a college class. The developers Fabio Caballero and Mario Zorz presented the new Tech Talks series, with a focus on mobile development.

The questions of the audience, nearly 60 people with a strong technical background, aimed at learning more of the nature of these talks and how they will develop as compared to traditional MoMo meetings. Antonio Peña, president of MoMo Argentina, explained that a space dedicated to technical people was a pending issue among MoMo enthusiasts. “You are the ones who make things happen”, he said. He also thanked the organizational effort made by Caballero and Zorz.

Maximiliano Firtman, mobile developer and Director at IT Master Institute, spoke about the importance of mobile web and widgets, which are installable applications developed using web techonology. “As opposed to native appliactions, widgets tend to be more multiplatform and that can be extremely useful in the next few years” – he explained. “For some developers, it’s easier and faster”.

His presentation – ver clear and explanative, as many of the people in the audience agreed -, was a brief version of another one Firtman presented earlier this year at InsideMobile, in San Jose, California. “Widgets are ideal for web 2.0” –he said – “but maybe not so good for building games. It definitely is better in the sense of the time involved in the development process and portability”. To watch the presentation follow this link

Afterwards Bryan Tafel, director at Sensebyte Insomnia talked about today’s challenges in mobile development. His talk was a mixture of the technical issues that arise at the moment of writing code, with issues related to the business as well.

In the technical part he made special emphasis on emulators and other tools for measuring the handsets’ overall performance at development time. “When you run your application on the emulator everything is nice – he said -, but it behaves differently on the real handset. The emulator can be used to test 75% of the app, but there is a margin left, and there are tools to help developers minimize the remaining margin”.

Regarding the business approach, Tafel talked about what he referred to as the corporate approach, where he gained most of his experience with his company. “There the main goal is to evangelize – he said-. Companies still don’t see their competitors have mobile solutions and it’s hard for them to make the first step. The whole effort sits around explaining ROI.”

He also talked about the SaaS approach, or Software as a Service. “But here the problem is the uncertainty we have. You have to have volume, and there are plenty of handset models and you are forced to get the most out of them. The risk still seems too high and therefore the kind of debates as this one tonight are good“.

In the end, Caballero announced - for the pleasure of the audience - that the next MoMo Tech Talks meeting could be the next November 16th, this time at the Aula Magna at UTN, focused on two hot issues: Google/Andoid and Motorola.


o

Carlos Joel Delgado Pizarro: Parece vacío, pero no… :)

   Publicado:

python-logo

Mmm… Hace algún tiempo que abrí este blog, y hasta ahora no escribí nada, bueno, no “afecta” mucho todavía porque nadie entra a ver este blog «todavía», pero eso no significa que no haya aprendido nada hasta ahora, ya tengo algo escrito en borrador sobre programación básica hasta el tema de Programación Orientada a Objetos, y esta semana voy a empezar a ver como maneja Python lo que es Herencia y Polimorfismo. Un dato interesante es que en Python «Todo es un Objeto».


Share