Vídeo promocional de Crayon Shin-chan para el Nintendo 3DS



¡Ya estoy en casa! ¿Kiss o queso?

Crayon Shin-chan, un videojuego bastante prometedor para la consola del Nintendo 3DS, gracias a la interesante propuesta que se manejó para el modo de juego, y por su famoso e intrépido personaje, Shin Chan.

Vía | Japón Total

Aprovecha las viejas disqueteras

¿Quién dijo que las antiguas disqueteras de ordenador (floppy) eran un recuerdo de un pasado floreciente y obsoleto? El ingenio de un nostálgico (y quizá también el aburrimiento), ha conseguido resucitar el uso de éstas. Pero en lugar de leer o escribir en disquettes, se ha reinventado para generar música gracias al inmenso ruido que realizaban. Por ello, y gracias a una controladora sincronizada, un poco de código ensamblador y un buen oído para la música, se han conseguido convertir dos disqueteras en una orquesta que reproduce la banda sonora de la Guerra de las Galaxias, concretamente La Marcha Imperial


Liberarado Tiny Core Linux v4.0


Ha sido liberada Tiny Core Linux, una distribución Linux minimalista de apenas 10MB, que incluye el Kernel de Linux 3.0 y una interfaz de usuario mínima y BusyBox, un conjunto de utilidades UNIX optimizadas al tamaño más pequeño. Esta distribución se carga de forma muy rápida y reside completamente en memoria. Es ideal para arrancar desde un pendrive y llevar el sistema operativo a cualquier parte y arrancarlo en cualquier ordenador sin necesidad de instalarlo. También es muy útil para utilizarlo en ordenadores antiguos o con pocos recursos.


Información | Introducción | Wiki

Estadísticas de Google+

Con la aparición de Google+, el gigante de las búsquedas ha vuelto a imponerse como líder indiscutible de internet y del negocio que genera, ocupando uno de los sectores más importantes y acercándose a Facebook. En muy poco tiempo ha conseguido captar millones de usuarios, en mucho menos tiempo que el resto de redes sociales, marcando un record muy difícil de batir.

Si eres bloguero o tienes una página web, quizá te interese promocionar tu perfil, mostrando tus estadísticas. Google ha habilitado un sitio especial llamado Social Statistics para ver las estadísticas de todos sus usuarios:

http://socialstatistics.com

Como dato anecdótico y curioso, en el primer lugar del ranking mundial aparece Mark Zukerberg, el "creador" de Facebook, por delante de Larry Page, fundador de Google.

Pero si realmente quieres promocionar tu perfil de Google+, mostrando tus estadísticas, en cualquier sitio Web, simplemente debes introducir el siguiente código HTML/JavaScript:

<div class="socialstatistics-widget" data-id="111989909116190075662"></div>
<script> (function(d,t){var b=d.createElement(t),c=d.getElementsByTagName(t)[0];b.async=b.src="http://socialstatistics.com/widget/widget.min.js";c.parentNode.insertBefore(b,c);})(document,'script');</script>


El parámetro data-id recoge tu ID en Google+ para que el Script consulte tus estadísticas. Para obtener ese ID, accede a Google+, haz click sobre tu perfil (en tu nombre). Se mostrará la página de tu perfil, y en la barra de dirección de tu navegador aparecerá una URL como ésta:


Copia el código (los números) y pégalos al código anterior. El resultado debería ser el siguiente:

Canonical inaugura Ubuntu App Developer, un portal de desarrollo para esta plataforma



David Planella de la compañía de Canonical ha realizado el anuncio oficial del lanzamiento de Ubuntu App Developer, sitio web en el que trabajaron varios meses con el fin de ayudar a los nuevos desarrolladores con la familiarización de nuevas tecnologías, estructuras y procesos para la plataforma de Ubuntu.

Para los interesados, pueden encontrar allí información bastante importante como vídeos de ayuda, enlaces a recursos, instrucciones acerca de cómo dar los primeros pasos; todo esto para desarrolladores nuevos. Para quienes ya poseen una aplicación publicada en el Centro de Software, pueden hacer uso de un tablero de instrumentos para el seguimiento de descargas o ventas, y modificar la información de su desarrollo (imagen, descripción, nombre, etc).


Así pues, queda abierta la invitación para cualquier persona que quiera desarrollar aplicaciones para el creciente sistema de Ubuntu, con la ayuda de en un sitio fantástico y que es el comienzo de otros servicios interesantes de Canonical.

Vía | OMG! Ubuntu!

Soundlapse


Divertido time-lapse, perdón, Soundlapse, realizado por Mark Pallman y Amanda Speva, que de acuerdo a las etiquetas del vídeo se deduce que trabajaron con una Canon 7D.

Vía | Vimeo

Fast Burst Camera, aplicación de Android que permite disparar hasta 30 FPS


Aplicaciones en el Android Market hay por montones, pero si buscamos en especial alguna que se relacione con la fotografía, nos encontrararemos con Fast Burst Camera como la más vendida en esta categoría -cuesta US$3.63-, capaz de ofrecer de 5 a 10 fotogramas por segundo, y en móviles de alta gama hasta 30 FPS. Algo verdaderamente asombroso.


Vía | PetaPixel

Boeing hace entrega de su nuevo superavión, el Dreamliner 787


El Dreamliner 787 de Boeing por fin ha sido entregado tras unos 3 años de retraso a la aerolínea janonesa ANA (All Nipon Airways) como el primer avión fabricado de materiales compuestos y que permitirá un ahorro de combustible a la compañía hasta del 20%. 

Este avión entrará a competir con los últimos modelos de Airbus, presentando en sus servicios recorridos de largas distancias en los que se suaviza el efectos del jetlag, sistemas de purificación de aire mejorado, ventanillas que mitigan la luz exterior, como el poder aterrizar en aeropuertos pequeños sin complicaciones.

ANA como cliente de este nuevo modelo, el Dreamliner 787, ya tiene encargado un promedio de 50 ejemplares, mientras que el primero partirá desde Seattle en Estados Unidos hasta su lugar de destino en Japón.



Vía | BBC

Curso de Python: 8-Orientación a objetos

La orientación a objetos es un paradigma de programación en el que todo se conceptualiza como objeto, tal y como se realiza en el mundo real. De esta manera, tratar objetos es más natural y sencillo de entender que con código puro. En este curso no se trata de enseñar a fondo este paradigma, si no mostrar cómo Python trata dicho paradigma.

Clases
La orientación a objetos arranca con el concepto de una clase, que es como el molde o el modelo de un objeto. Una clase define las características comunes a cualquier objeto de ese tipo o clase. Estas características están clasificadas en propiedades (o atributos) y métodos (acciones o funciones). Por ejemplo, una clase Vehiculo define las propiedades (ruedas, color, ancho o alto) y los métodos (arrancar, acelerar o frenar) comunes a todos los vehículos.  
Una clase define las propiedades y los métodos comunes a los objetos

Para llevar a la práctica estos conceptos, crearemos el módulo Vehiculo.py, escribiendo el siguiente código:

class Vehiculo:

   """ La clase Vehiculo define las caracteristicas comunes de cualquier vehiculo."""
   ruedas=4
   color='Amarillo'
   ancho=170
   alto=140
   largo=400

   def __init__(self, aRuedas, aColor, aAncho, aAlto, aLargo):
      self.ruedas=aRuedas
      self.color=aColor
      self.ancho=aAncho
      self.alto=aAlto
      self.largo=aLargo

   def arrancar(self):
      print "Vehiculo arrancado"

   def acelerar(self):
      print "Acelerando vehiculo"

   def frenar(self):
      print "Frenando vehiculo"

Las propiedades de la clase se definen como variables a nivel de bloque, fuera de los métodos, y tienen visibilidad dentro y fuera de la clase. Las variables definidas dentro de cada método son propias del método, y no tienen visión fuera de este ámbito.

El método __init__ es especial para las clases, el cual se ejecuta automáticamente al crear el objeto. Es similar al constructor de otros lenguajes orientados a objetos.

El parámetro self es obligatorio en los métodos de la clase, el cual no se pasa cuando se le llama. Contiene una referencia al propio objeto, por lo que se utiliza para acceder a cualquier propiedad o método del propio objeto, como en el caso del método __init__, donde accede a las propiedades del propio objeto para asignarle los valores pasados por parámetro.

El texto inicial mediante comillas triples es un comentario especial. Sirve para documentar el módulo, a modo de ayuda.

Las clases son reutilizables, por lo que se pueden guardar en módulos, y organizando éstos en paquetes.


Instancias
Una clase es una definición genérica de un tipo de objetos. Una instancia es una entidad física de una clase, o, lo que es lo mismo: un objeto físico. Por ejemplo, mi propio coche es un objeto físico (o una instancia) de la clase Vehiculo. Aunque existan mil coches de la misma marca y del mismo modelo, cada uno de ellos es, en sí mismo, una entidad física única, y es tratado como objeto único e individual.
Una instancia es un objeto físico, único e individual, de un tipo o clase Para crear una instancia, se asigna a una variable el valor de la clase. Si se definió el método __init__ se pasarían los parámetros necesarios para que la instancia se inicialice con las propiedades correspondientes:

>>> from Vehiculo import *
>>> miCoche=Vehiculo(4,'Azul',170,155,420)
>>> print "Color de mi coche: ",miCoche.color
Color de mi coche: Azul
>>> miCoche.color = 'Rojo' # Cambio de color
>>> print "Color de mi coche: ",miCoche.color
Color de mi coche: Rojo
>>> miCoche.arrancar()
Vehiculo arrancado

El acceso a las características del objeto se realiza nombrando al objeto, seguido de un punto, y del nombre de la propiedad o del método. La función dir() obtiene las características que posee un objeto:

>>> dir(miCoche)
['__doc__', '__init__', '__module__', 'acelerar', 'alto', 'ancho', 'arrancar', 'color', 'frenar', 'largo', 'ruedas']

Se puede apreciar que incluye tres métodos especiales ya predefinicos: __doc__ (muestra la documentación o ayuda), __init__ (método constructor), __module__ (nombre del módulo).

>>> miCoche.__doc__
' La clase Vehiculo define las caracteristicas comunes\n\t\tde cualquier vehiculo.'
>>> miCoche.__module__
'Vehiculo'

La función especial dir también se aplica a los módulos normales, y permite conocer las funciones que se
han importado de dicho módulo.

Clases derivadas
Habrá ocasiones en que la complejidad de las clases será importante, y será necesario organizar la semántica de las clases de alguna manera, además de por paquetes. La orientación a objetos nos permite crear clases derivadas, que son clases que “derivan” las características de otra clase base y agrega nuevas características o modifica alguna existente. El concepto de derivación es igual que el de herencia.

Por ejemplo, si quisiéramos tener una clase para las motos, en lugar de tener que definir nuevamente todas las características de los vehículos, como una moto es un tipo de vehículo, se puede derivar de éste. La definición de una clase derivada es igual que la de una clase normal, pero a la hora de declarar la clase, se indica también de qué clase deriva. Para ver esto en la práctica, crearemos el módulo Moto.py, que contendrá el siguiente código:

from Vehiculo import *

class Moto(Vehiculo):
   """ La clase Moto deriva de la clase Vehiculo,
       especializando caracteristicas de la propia moto """
   marcha=0

   def __init__(self, aColor):
      self.ruedas=2
      self.marcha=0
      self.color=aColor

   # Sobreescribe metodo arrancar()
   def arrancar(self):
      print "Moto arrancada"

   def cambiarMarcha(self, aMarcha):
      self.marcha=aMarcha

A la hora de instanciar de esta clase, se procede como si fuera una clase normal:

>>> from Moto import *
>>> miMoto=Moto("Roja")
>>> miMoto.ruedas
2
>>> miMoto.color
'Roja'
>>> miMoto.arrancar() # de clase Moto
Moto arrancada
>>> miMoto.cambiarMarcha(3)
>>> print "Ahora voy en la marcha",miMoto.marcha
Ahora voy en la marcha 3
>>> miMoto.acelerar() # de clase Vehiculo
Acelerando vehiculo

No existen limitaciones en cuanto al nivel de derivación. A un nivel más profundo, una clase derivada derivaría las características de su clase base, y si ésta derivase de otra superior, también derivaría las características de ésta, y así hasta el primer nivel de derivación.

Cuando se accede a una propiedad o a un método desde una instancia de una clase derivada, primero se busca en la propia clase derivada. Si no se encuentra allí, buscaría en la clase base inmediatamente superior. Y así, hasta la clase base de primer nivel.

Herencia múltiple
Una clase puede derivar de varias clases base.

class Quad(Moto, Coche):
   <sentencia-1>
   …
   <sentencia.n>

El acceso a una característica se realiza de forma similar a la de una clase derivada normal. Primero busca en la clase derivada. Si no se encuentra, busca en la jerarquía de las clases base de izquierda a derecha, hasta el primer nivel de derivación: primero Moto (y Vehiculo) y después Coche (y Vehiculo)

Una clase derivada hereda las características de sus clases bases en todos sus niveles jerárquicos

Entregas:

Enlaces de interés:

A 17 días de su lanzamiento, Ubuntu 11.10 por Silas Lenz


Descarga | deviantART

Observando las auroras desde la ISS [Video]


Deslumbrante time-lapse de este mes de septiembre en el que podemos apreciar las Auroras (luces del norte y sur) de nuestro planeta desde la Estación Espacial Internacional en órbita.

Electric Car, el sistema innovador de transporte presentado en el aeropuerto Heathrow



En el aeropuerto Heathrow de la ciudad de Londres en Inglaterra se ha presentado el Electic Car, vehículo que como su nombre lo indica, trabaja con energía eléctrica y cuenta con capacidad para 6 pasajeros por coche, a los cuales moviliza desde la terminal hasta el aparcamiento, reduciendo con esto el tiempo entre los dos puntos a sólo 15 minutos, es decir un 60% a lo empleado anteriormente, y como no, con este proyecto también aportan al cuidado del medio ambiente.





Vía | Laughing Squid
Imagen | ULTra PRT

Curso de Python 7: Módulos y paquetes

Módulos

Las funciones son recursos muy útiles para reutilizar pequeños fragmentos de código dentro del ámbito del script que estamos usando. Sin embargo, los proyectos suelen ser grandes, y pueden requerir de muchos scripts, en cada uno de los cuales se contempla una determinada funcionalidad del programa en general. Algunas veces, podrá organizarse un gran proyecto, compuesto a su vez de varios proyectos más pequeños. También, a veces, podremos tener varios proyectos dentro de una organización. En cualquiera de estos casos será necesario reutilizar código de forma compartida.

Los módulos son archivos que generalmente contienen funciones, y pueden ser reutilizados a modo de librería compartida desde cualquier script en cualquier proyecto. Vienen a ser cajas de herramientas disponibles para todos, normalmente organizadas según su función o utilidad. Las funciones de un módulo pueden ser importadas dentro de otros módulos principales, o dentro de un script. Un módulo también puede contener código ejecutable.

Para poner en práctica estos conceptos, vamos a crear un archivo llamado matematicas.py, donde guardaremos algunas funciones matemáticas:

def suma(a,b):
   return a+b

def resta(a,b):
   return a-b

def producto(a,b):
   return a*b

def division(a,b):
   return a/b

def resto(a,b):
   return a%b 

def potencia(a,b):
   return a**b

Una vez guardado, para utilizar las funciones del módulo importaríamos el módulo mediante la sentencia import. El siguiente ejemplo, muestra cómo hacerlo desde la consola Python, aunque el concepto es también válido para un script. Las importaciones de módulos se tomarán por defecto en el mismo directorio que donde abrimos el intérprete Python o la consola. Si los módulos están en otro directorio, habrá que especificar la ruta correcta en el variable PYTHONPATH:

>>> import matematicas
>>> print matematicas.suma(3,2)
5
>>> matematicas.resta(3,2)
1
>>> matematicas.producto(3,2)
6
>>> matematicas.division(6,2)
3
>>> matematicas.resto(3,2)
1
>>> matematicas.potencia(3,2)
9

Para invocar a una función del módulo, se llama a ésta anteponiendo el nombre del módulo, seguido de un punto, y del nombre de la función.

Otra forma de importar funciones de un módulo, es de forma selectiva, indicando qué funciones vamos a utilizar:

>>> from matematicas import suma, producto
>>> print suma(3,2)
5
>>> resta(3,2) # funcion no importada
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'resta' is not defined

Si a la cláusula import indicamos un asterisco, se importarán todas las funciones del módulo:

>>> from matematicas import *
>>> resta(3,2)
1
>>> import matematicas
>>> matematicas.resta(3,2)
1

La diferencia entre usar la sentencia from y la sentencia import, es que con from no es necesario indicar el nombre del módulo junto al nombre de la función, sino directamente el nombre de la función. En el caso de la sentencia import, si se utiliza a menudo una función y se desea ahorrar código, se puede asignar a un nombre local, y utilizar éste para las llamadas:

>>> import matematicas
>>> res = matematicas.resta
>>> res(3,2)
1 

Paquetes
La mejor forma de organizar nuestros módulos es mediante paquetes. Un paquete es un sistema de clasificación de módulos de funciones mediante directorios, siendo estos jerárquicos mediante niveles de especialización. Por ejemplo, si se desarrollaran módulos para tratar archivos multimedia, podríamos tener un primer nivel llamado multimedia, de éste colgarían varias ramas, como video, imagen y sonido. Dentro de video, por ejemplo, podrían colgar las ramas hd (alta definición) y bd (baja definición), y dentro de éstas podrían colgar las ramas formatos, drivers y motores. En cada una de las ramas, puede haber módulos o más ramas, según nuestro criterio de clasificación. Cuando se quiere utilizar un determinado módulo, hay que indicar la ruta completa del paquete hasta el módulo, que coincide con el árbol de directorios. Por ejemplo:

>>> import multimedia.video.hd.drivers.avidriver
>>> from multimedia.video.hd.drivers import avidriver


Entregas:

Enlaces de interés:

Mantén la calma y cámbiate a Linux


Tal y como lo dice Teles Maciel, diseñador de esta imagen, en caso de cualquier error grave en tu sistema o riesgo para tu libertad, mantén la calma y ve a la solución. Cámbiate a Linux.


Vía | deviantART

Aprendiendo el lenguaje Wookiee



En la saga de Star Wars nos encontramos con diferentes lenguajes por cada criatura extraña que aparece en ésta, y como no, uno de los más conocidos es el wookiee, hablado por nuestro poco peludo amigo Chewbacca del planeta Kashyyyk.

Desde Chronicle Books nos ofrecen por el precio de US$16.95 una guía práctica titulada "How to Speak Wookiee" para aprender con facilidad frases clave en este idioma y de paso evitar mal entendidos con esta población algo mal humorada como prevenir también una posible guerra galáctica que terminaría inmediatamente con las relaciones diplomáticas.



Vía | Oh Gizmo!

Osalt, un sitio para encontrar las alternativas libres del software comercial

Para todas aquellas personas que llevan poco tiempo envolviéndose en el mundo del software libre o para quienes dentro de poco lo harán, el mejor sitio a recomendarles siempre es el de Osalt, un lugar para conocer las alternativas de código abierto al software comercial. En esta interesante base de datos se podrá navegar entre diferentes categorías como negocios, comunicaciones, desarrollo, juegos, entre algunas más, ver comparaciones entre productos comerciales y libres, sus pro y sus contra.

Otra característica a destacar es la de estar al tanto de las últimas novedades a través de la red social Twitter (@osaltcom) o vía Feed. Por ejemplo, en la página principal, se muestran también los programas que fueron agregados recientemente a la lista para una mayor cobertura de información.


"¿Por qué código abierto? - Al elegir un producto de código abierto, el usuario obtiene una serie de ventajas en comparación con los productos comerciales. Además del hecho de que el código abierto está siempre disponible de forma gratuita, es una aplicación transparente, en el producto que usted está invitado exclusivamente detrás de las escenas para ver todo el código fuente y de proponer mejoras del producto. Además, cada producto está cubierto por una red dedicada grande, o de la comunidad, que está más que dispuesto a contestar cualquier pregunta que usted pueda tener."




Sitio Oficial | Osalt

Tutti-distros para esta semana

Tras las vacaciones de verano el software libre comienza con energía e ímpetu. Esta semana se ha producido la liberación de varias distribuciones de sistemas operativos libres basados en Unix, entre las que cabe destacar las siguientes:

  • Linux Mint Debian 201109: Linux Mint se ha merecido ocupar los primeros lugares de Distrowatch. Esta distribución, en concreto, está basada en Debian, la distribución más veterana y estable que existe. Está disponible para 32 y 64 bits, incluyendo los escritorios XFCE y Gnome. Enlace | Página oficial Linux Mint
  • CentOS 5.7: Distribución basada en RedHat Enterprise Linux, creada y compilada por la comunidad a partir del código fuente publicado por RedHat, y que abastece las necesidades de servidores. Enlace| Página oficial CentOS
  • OpenIndiana oi_151a: Distribución derivada de OpenSolaris, la cual fue abandonada por Oracle cuando adquirió a Sun Microsystems Enlace | Página oficial OpenIndiana
  • Knoppix 6.7.1: Espléndida distribución basada en arranques Live (Flash, pendrive, discos externos, CD....), basada en Debian, y que incluye una gran recopilación de aplicaciones libres. Incluye escritorios LXDE, Gnome y KDE 4. Enlace | Página Oficial de Knoppix
  • Macpup 5.2.8: Increíble distribución basada en Puppy Linux, que ocupa muy poco (apenas 164 MB), y al que se ha incorporado una experiencia de usuario similar a Mac, gracias al escritorio Enlightment y una serie de efectos visuales y temas artísticos muy elaborados. Enlace | Página Oficial de Macpup


  • Trisquel GNU Linux 5.0: Basada en GNU Linux, es ideal para el hogar, la pequeña empresa y para la educación, esta distribución está disponible en entornos Gnome y LXDE

Escritorios de Septiembre

Después de transcurrido un buen tiempo, retomamos nuevamente la sección de los escritorios del mes, que se escogen tras haber sido publicados por los miembros del grupo en Flickr llamado Escritorios commandcat.

Para el día de hoy, contamos con el aporte de paran0idx, Sr_X y Belhor_ con sus sistemas operativos personalizados, Pardus Linux, Windows XP y Arch Linux, respectivamente. 


Recuerden que si desean conocer más información al respecto, al dar clic sobre cada imagen, los llevará al escritorio publicado en Flickr y así contactar con los autores si lo desean.

Pantallazo - Julio2011
Escritorio de @paran0idx
OS: Pardus Linux


felina (definitivo)
Escritorio de @Sr_X
OS: Windows XP


Arch Linux - Septiembre'11
Escritorio de @Belhor_
OS: Arch Linux

Curso de Python: 6-Funciones

De la consola al programa
Llegó el momento de dejar la consola para comenzar a escribir código en archivos, lo que nos permitirá crear estructuras más grandes y complejas sin necesidad de repetirlas constantemente desde la consola, y, lo más  importante, que sean permanentes (al salir de la consola desaparecen). Con un editor de textos vamos a escribir el siguiente código, el cual guardaremos en un archivo llamado juego.py:

import random

# Inicializacion de variables
random.seed() # inicializa generador aleatorio
intento = 0 # contador de intentos
numero = random.randint(1,101) # entero aleatorio entre 1 y 100
print "He pensado un numero entre 1 y 100"

# Repetir mientras no se acierte
while (True):
   intento = intento + 1
   propuesto = int(raw_input("Dame un numero (1-100):"))
   if (numero<propuesto):
      print "El numero es menor que ",propuesto
   elif (numero>propuesto):
      print "El numero es mayor que ", propuesto
   else:
      print "Acertaste en", intento, "intentos"
      break; # Salir del bucle

print "Fin del juego"

Este archivo con este código Python, es lo que se denomina script (guión). Una vez guardado, desde el terminal se ejecutaría el intérprete de Python, pasando como argumento la ruta del archivo con nuestro script, para que éste sea ejecutado:

$ python juego.py

El intérprete de Python analizará el script, y si hubiera algún error sintáctico, lo mostraría en pantalla, indicando la línea, el lugar y la causa. Si no hay errores, se ejecutará el script.

Funciones
Una función es, esencialmente, un fragmento de código identificado bajo un nombre. Este código se ejecuta invocando su nombre cada vez que nuestros scripts necesiten ejecutar dicho código, como si extendiéramos el lenguaje Python con nuestros propias sentencias. Las funciones son muy útiles para compactar código repetitivo que escape al ámbito de un bucle, siguiendo el esquema de “divide y vencerás”. Veamos un ejemplo muy sencillo que ejecutaremos desde la consola:

>>> def saludo(): # define la funcion
...    print "Hola" # bloque de la funcion
...
>>> saludo()
Hola

La palabra clave def (de define), define la función saludo(), cuyo código se escribe a continuación indentado en un bloque. Cuando se invoca a la función, ésta mostrará en pantalla el literal Hola. Podemos mejorar este ejemplo mediante la parametrización, que permite pasar valores a la función:

>>> def saludo(nombre): 
...    print "Hola,",nombre
...
>>> saludo("Python")
Hola, Python

Los parámetros capturan los valores pasados desde la llamada a la función, en el mismo orden en que se pasan (en caso de haber varios parámetros). También es posible asignar un valor por defecto a un parámetro, el cual tomará en caso de omisión:

>>> def saludo(nombre='Python'):
...    print "Hola,",nombre
...
>>> saludo() # no se pasa valor
Hola, Python
>>> saludo("Tocayo") # se pasa valor
Hola, Tocayo

Cuando se definen varios parámetros, y más de uno puede tener valor por defecto, se denominan keywords (palabras clave). Las funciones requieren que los parámetros se pasen en el mismo orden, pero si se omite una keyword, y en la siguiente ha de pasarse un valor, entonces ha de pasarse el nombre de dicha keyword, junto con su valor:

>>> def saludo(nombre='Python',edad=22):
...    print "Hola,",nombre,". Tienes",edad,"años"
...
>>> saludo()
Hola, Python . Tienes 22 años
>>> saludo('Tocayo')
Hola, Tocayo . Tienes 22 años
>>> saludo(edad=38) # paso valor a keyword
Hola, Python . Tienes 38 años
>>> saludo('Tocayo',38)
Hola, Tocayo . Tienes 38 años

Además de compactar nuestros programas, las funciones permiten crear o transformar la información, retornando un nuevo valor que puede ser utilizado desde nuestros scripts:

>>> def suma(a,b):
...    return a+b
...
>>> c=suma(12,8)
>>> print c
20


Entregas:

Enlaces de interés:
© commandcat
Maira Gall