Razón Artificial

La ciencia y el arte de crear videojuegos

Curso Python IV – Funciones

Escrito por adrigm el 20 de agosto de 2010 en Noticias, Programación | 9 Comentarios.

Llamada a funciones

Ya hemos visto en anteriores entregas la llamada a una función.

>>> type("32")
< type 'string'>

El nombre de la función es type y lo que está entre paréntesis se llama parámetro, las funciones pueden recibir un parámetro, varios parámetros o ningún parámetro. Nuestra función type recibe 1 parámetro, en este caso puede ser cualquier valor. Y cuando es llamada devuelve el tipo de dato que es el que le hemos pasado como parámetro. Esa es su función, valga la redundancia.

Si pusiéramos la función type dentro de un script al ejecutarlo nos dariamos cuenta de que no pasa nada, esto es así porque no le hemos dicho que hacer con ese valor, podríamos imprimirlo en pantalla:

print type("Hola")

O almacenarlo en una variable

tipo_dato = type("Hola")
print tipo_dato

Otra ejemplo de función es la función id() esta función devuelve un identificador único para cada variable o número en la memoria del ordenador.

>>> id(10)
31246556
>>> a = 10
>>> id(a)
31246556
>>> id(4)
31246628

Como vemos tanto el valor 10 como la variable a tienen el mismo identificador, esto es así porque al tener el mismo valor python ahorra memoria usando la misma dirección de memoria ya que contienen lo mismo.

Conversión de tipos

Python posee una funciones muy útiles para la convertir variables de un tipo a otro, siempre que la conversión sea posible.

Tenemos la función int() que convierte un valor pasado en un entero, si se puede.

>>> int("25")
25
>>> int(25.423)
25
>>> int(6.9999)
6
>>> int("Hola")
Traceback (most recent call last):
  File "", line 1, in 
ValueError: invalid literal for int() with base 10: 'Hola'

Como vemos podemos convertir la cadena “25” a tipo int o el número decimal 24.423, pero no podemos convertir la cadena “Hola” a un tipo entero.

Otra función es float() que como imaginaréis convierte a un número decimal.

>>> float(4)
4.0
>>> float("5")
5.0
>>> float("5.25")
5.25

Para python 4 es diferente a 4.0, puede que representen el mismo valor, pero se representan de forma diferente dentro del ordenador.

Por último tenmos la función str() que convierte el valor pasado en una cadena.

>>> str(42)
'42'
>>> str(4.215)
'4.215'

Coerción de tipos

Si queremos saber la fracción de hora que ha pasado, podríamos usar algo como lo siguiente

minutos = 45
fraccion = minutos / 60
print fraccion

Esto en teoría nos devolvería la fracción de hora transcurrida, es decir 0.75 (el 75% de la hora), sin embargo si lo ejecutamos veremos que el resultado es 0, esto ocurre porque estamos haciendo una división de enteros. La solución sería convertir los datos a tipo float.

minutos = 45
fraccion = float(minutos) / 60.0
print fraccion

O directamente aprovecharnos de la coerción de tipos de python que hace que si uno de los valores de la opereción es de tipo float, convierte los demás automáticamente a ese tipo, por lo que podríamos hacer.

minutos = 45
fraccion = minutos/60.0
print fraccion

Funciones y matemáticas

Si tienes una base matemática entender las funciones no te habrá supuesto mucho problema ya que actúan de forma similar a las funciones matemáticas. Por ejemplo si tenemos la siguiente función:

F(x) = Sin(1/2)

Sabemos que primero se evalúa la expresión 1/2 que da 0.5 y luego se halla el seno de 0.5 que sería 0.4794 aproximadamente. También podemos tener funciones dentro de funciones

F(x) = Sin(log(25))

Donde primero se calcularía el logaritmo de 25 y luego el seno del resultado.

En programación sucede igual si tu tienes una función dentro de una función, primero se evalúa la funciones interiores y luego las exteriores.

Por cierto, python dispone de un módulo para las funciones matemáticas más habituales llamado math. Los módulos en python es código ya escrito que contienen clases y funciones listas para ser usada, veamos un ejemplo

>>> import math
>>> math.sin(5)
-0.95892427466313845
>>> math.sin(45)
0.85090352453411844
>>> math.cos(45)
0.52532198881772973
>>> math.sqrt(25)
5.0
>>> math.log(25)
3.2188758248682006

como vemos a través de import math importamos el módulo y para usar lo que contiene ese modulo lo hacemos a través de módulo.funcion(), como por ejemplo math.sqrt(49) que nos devolvería la raiz cuadrada de 49.

9 Comentarios en "Curso Python IV – Funciones"

  1. Centinela dice:

    Adrign, perdona el abuso de la pregunta: cuando saldra publicado la parte V de este excelente curso de Pyton V2.6. Estoy nuevo en el blog y he seguido con mucho interes, tus clases de programacion.

    Saludos y mil gracias por tu dedicacion.

  2. adrigm dice:

    Centinela, a ver cuando puedo publicar porque no doy para todo. Solo en el blog tengo varios cursos/tutoriales abiertos y cuando voy pudiendo los voy actualizando. El de Python precisamente ya llevo un tiempo sin tocarlo, a ver si el fin de semana publico algunas entregas más.

  3. Facundo Estevez dice:

    Muy buen blog, yo estoy empezando con Python como lenguaje de hobbie (dada su simpleza, me resulta muy divertido programar en él), como para salir de los lenguajes que uso en el trabajo (SAP ABAP, C#, Java, y demás…).
    Me lo recomendó a tu blog Juan Pippo (kraken Himoto), ya que es conocido mío y yo también estaba en la comunidad GM ;)
    Así que estoy terminando de aprender la sintaxis de python y averiguando como se usa PyGame, para lo cual tu blog me viene como anillo al dedo.
    Espero que sigas actualizándolo, saludos.
    Atte. F. M. Estevez.

  4. Cabral dice:

    Adrign,

    Exelente blog, muchas gracias por la informacion ha sido de mucha utilidad cuando publicaras el que sigue?

    Saludos y gracias

  5. William dice:

    Que tal? Excelente el curso me ha servido para repasar temas. Ps quería decirte que te hace falta enlazar la parte V del curso de python en el índice, que se encuentra hasta Funciones, pero no aparece V – Funciones de usuario.

    Excelente aporte!!!!

  6. kaotika dice:

    Te seguimos leyendo, no nos ovides! , gracias

    • adrigm dice:

      Y os lo agradezco, puede que más adelante continue el curso. Ahora mismo no puedo, pero hay en la red muy buenos libros sobre python. Podéis echarle un ojo a “Aprender a pensar como un programador con python”.

      Un saludo,

  7. josep gari dice:

    el mejor curso de pito

  8. tomas morande dice:

    como puedo transformar un str con python con una operacion dentro a su resultado? por ejemplo suma = ‘1+1′ y que imprima el resultado 2 ?

Deja un comentario