You are on page 1of 8

Funciones, Clases y Objetos

ESET Latinoamrica | info@eset-la.com | www.eset-la.com




Contenido
Funciones ............................................................................................................................................................................................. 3
Qu es una funcin? ....................................................................................................................................................................... 3
Sintaxis.................................................................................................................................................................................................. 3
Argumentos y valores de retorno ......................................................................................................................................................... 4
Clases y Objetos .................................................................................................................................................................................... 4
Qu es un objeto? ........................................................................................................................................................................... 5
Qu es una clase? ........................................................................................................................................................................... 5
Clases, objetos y mtodos ................................................................................................................................................................ 5
Mdulos................................................................................................................................................................................................ 6
Qu es un mdulo? ......................................................................................................................................................................... 6
Reutilizando cdigo .............................................................................................................................................................................. 7
Conclusin ............................................................................................................................................................................................ 8


Introduccin a Python Mdulo III 3


Introduccin
Hasta ahora, vimos parte por parte todos los elementos de Python, sus variables, algunas funciones bsicas y las estructuras
condicionales de cdigo. Al hacerlo, fuimos repasando los conceptos ms bsicos de la programacin y logramos agrupar distintas
lneas de cdigo en scripts para desarrollar tareas especficas. Sin embargo, no hemos visto gran parte del potencial de este
lenguaje y por sobre todo, de qu manera podemos optimizar su uso para que nuestros cdigos y programas sean ms y ms
eficientes.

En el mdulo 3 del curso de Introduccin a Python de la Plataforma Educativa de ESET veremos qu son y para qu sirven las
funciones, como as tambin algunas maneras de agrupar diferentes sentencias de cdigo para que tengan comportamientos
especficos segn sea el caso. Nos adentraremos en el mundo de los objetos, y con ellos veremos cmo construir programas ms
eficientes, ms robustos y mucho ms claros de entender.

Funciones
Al comenzar a programar, nuestro cdigo puede no ser muy extenso, no contar con las grandes funcionalidades o incluso no
tener una complejidad muy elevada. A medida que comenzamos a desarrollar y vamos ganando conocimiento y experiencia, nos
damos cuenta de que existen una serie de tareas que se repiten una y otra vez en diferentes lugares de nuestros programas.

Cuando necesitamos ejecutar las mismas lneas de cdigo una y otra vez en diferentes lugares de nuestro programa lo mejor que
podemos hacer es agruparlas en una funcin. De esta manera podremos ejecutar esa seccin del programa cuando lo
necesitemos y en caso de tener que cambiar algo, solo hay que hacerlo en un lugar y no recordar todos los lugares donde
escribimos lo mismo.
Qu es una funcin?
En pocas palabras una funcin es un conjunto de instrucciones que se utilizan para un fin especfico, como por ejemplo para crear
una conexin a un sitio web, escribir en un archivo, realizar una suma o analizar una cadena de texto.
A lo largo de los mdulos anteriores, fuimos escribiendo nuestras lneas de cdigo en la consola o en un script, y utilizamos
funciones ya existentes, ahora vamos a ver cmo crear nuestras propias funciones.
Sintaxis
La sintaxis para definir una funcin es la siguiente:


Imagen 1 - Ejemplo de una funcin en Python
Una de las palabras reservadas de Python que se utiliza para especificar el comienzo de una funcin es def, seguido por el
nombre de la funcin ms los argumentos que recibe entre parntesis y separados por comas. Finalmente hay que poner un : y
en la lnea siguiente se escribe el cdigo que corresponde a la funcin dejando los espacios correspondientes a la indentacin, tal
como lo hicimos con el if, el for y el while.
Introduccin a Python Mdulo III 4


Argumentos y valores de retorno
Como vimos en el ejemplo anterior, una funcin puede recibir valores a travs de los argumentos. Adems, una funcin puede
retornar un valor u objeto (un poco ms sobre esto ms adelante en este documento), para ello deber incluir la palabra return
como podemos ver en el siguiente ejemplo:


Imagen 2 - Funcin con dos argumentos y un valor de retorno
Cuando ejecutemos este script desde la consola, la salida ser la siguiente:


Imagen 3 - Ejecucin de funcion_suma.py
Los invito a probar cmo sera escribir una funcin similar a la que vimos pero para la resta, la multiplicacin y la divisin. En
todos los casos que devuelva como valor de retorno el resultado de la operacin. Todas las funciones las pueden escribir dentro
del mismo archivo .py.

Clases y Objetos
En el mundo de la programacin existen una gran cantidad de paradigmas, cada uno de ellos refiere a una manera de pensar
sobre cmo resolver un problema. Uno de los paradigmas que ms ha crecido durante los ltimos aos es el de la Programacin
Orientada a Objetos (POO)
1
.

A lo largo del curso hemos interactuado con objetos. Por ejemplo, cuando nosotros hablamos de una cadena de texto (string) y
llamamos a mtodos como split(), upper(), lower() estamos interactuando con objetos. Un objeto tiene un comportamiento, un
estado y una identidad. Ms adelante definiremos, objetos, clases y mtodos ms formalmente.

Otro concepto muy importante en relacin a la Programacin Orientada a Objetos es el concepto de herencia
2
. La herencia nos
permite crear subclases de una ms grande agrupando algunas caractersticas generales. En los diferentes lenguajes de

1
Programacin Orientada a Objetos: http://es.wikipedia.org/wiki/Programaci%C3%B3n_orientada_a_objetos
2
Herencia: http://es.wikipedia.org/wiki/Herencia_(inform%C3%A1tica)
Introduccin a Python Mdulo III 5


programacin orientados a objetos existen aquellos que soportan herencia simple o herencia mltiple. En el caso de Python, este
lenguaje trabaja con herencia mltiple
3
.

Cuando trabajamos con herencia, lo que sucede es que la clase hija herede todos los mtodos y atributos de la clase padre.
Un ejemplo para ver este concepto podra ser en la relacin entre los diferentes cdigos maliciosos que existen. Digamos que
tenemos una Clase en Python que se llama malware que tendr atributos y mtodos similares en todos los tipos de amenazas
que existen. Dos subclases que podramos definir seran troyano y gusano. Los troyanos y gusanos por ejemplo se diferencian por
las tcnicas de propagacin que utilizan y es por ello que cada una podra tener su propia implementacin del mtodo
propagarse. Para ms informacin sobre la clasificacin de los cdigos maliciosos y sus tipos les recomendamos visitar [Curso
bsico sobre cdigos maliciosos de ACADEMIA ESET]
Qu es un objeto?

Se conoce como objeto a la instanciacin de una clase. Dicho de otra manera, nosotros no programamos objetos, sino que
creamos clases con mtodos y atributos. Luego lo que hacemos en nuestro cdigo es instanciar los objetos que tendrn el
comportamiento de su clase.
Qu es una clase?
Entonces, una clase es un template en donde se definen los atributos y el comportamiento. Todos los objetos que pertenezcan a
una misma clase realizarn acciones similares y se diferenciarn segn el valor de sus atributos.
Clases, objetos y mtodos

En nuestro cdigo definimos las clases, sus mtodos y atributos para luego instanciar los objetos que llevaran a cabo las acciones.
A modo de representar este concepto, interpreten qu es lo que pasa en el siguiente script:


Imagen 4 - Clases y objetos
Para entender todos estos conceptos necesitarn un poco de tiempo, y sobretodo mucha prctica. Para programar bien hay que
dedicarle tiempo y estudio ya que muchos de los conceptos que vemos aqu son introductorios. Existen otros conceptos como

3
Herencia Mltiple: http://es.wikipedia.org/wiki/Herencia_multiple
Introduccin a Python Mdulo III 6


polimorfismo
4
y encapsulamiento
5
que no trataremos en detalle durante el resto del curso, pero les dejamos enlaces para que
puedan profundizar si les interesa.

Mdulos
Cuando un programa crece en su tamao y funcionalidades, tener todo en un solo archivo puede ser ms que complicado. Para
simplificar esta problemtica, los lenguajes de programacin como Python nos permiten dividir nuestro cdigo en mdulos y
paquetes. De esta manera podremos agrupar mejor nuestro cdigo segn la relacin que existan entre nuestras clases y
funciones.
Qu es un mdulo?
Un mdulo eds un archivo con extensin .py que nosotros creamos y guardamos en nuestra computadora. Los mdulos se
pueden invocar desde diferentes partes del programa cuando sea necesario y tener una mejor organizacin de nuestro cdigo.

En el cdigo que se puede observar en la imagen 4, definimos tres clases malware, gusano y troyano, todas dentro del mismo
archivo. Ahora, nosotros podemos importar desde otro lugar las clases sin la necesidad de volver a escribir ese mismo cdigo. En
otras palabras, agrupar las funciones y clases en diferentes mdulos tambin nos permite reutilizar cdigo de una manera
bastante sencilla.
Agrupando funciones, clases y objetos
En esta seccin veremos cmo hacer para importar clases y funciones desde otro mdulo y lograr que se ejecuten sin ningn tipo
de problemas. Para ello vamos a trabajar con dos archivos diferentes, primero el archivo codigos_maliciosos.py que contiene las
definiciones de las clases y sus mtodos, importaremos las clases desde el archivo ejemplo.py y veremos cmo se pueden
ejecutar.

Para importar un mdulo desde otro archivo tenemos dos maneras diferentes de hacerlo. La primer opcin la utilizamos
anteriormente y es a travs del uso de la palabra import <modulo>, esta opcin importar todo el mdulo. La segunda es
utilizando las palabras from <modulo> import <clases o funciones>, que a diferencia de la anterior solo importar los elementos
que mencionemos.

Malware.py:


4
Polimorfismo en la programacin orientada a objetos:
http://es.wikipedia.org/wiki/Polimorfismo_(programaci%C3%B3n_orientada_a_objetos)
5
Encapsulamiento: http://es.wikipedia.org/wiki/Encapsulamiento_(inform%C3%A1tica)
Introduccin a Python Mdulo III 7



Imagen 5 - codigos_maliciosos.py

Ejemplo.py:

Imagen 6 - ejemplo.py

Al ejecutar el archivo ejemplos.py, Python sabr que debe ir a buscar las clases troyano y gusano al archivo
codigos_maliciosos.py y as podremos ejecutar los mtodos de estas clases sin problemas al instanciar los objetos. En este caso,
para que funcione nuestro script, ambos archivos debern estar en el mismo directorio.
Reutilizando cdigo
La reutilizacin de cdigo es muy importante para evitar tener que duplicar las mismas lneas de cdigo en diferentes lugares de
nuestro programa, haciendo que sea ms prolijo y uniforme todo lo que hagamos. Adems, nos evita problemas al cambiar
cualquier sentencia, ya que lo tendremos que hacer una sola vez en lugar de modificar las mismas lineas en todos los lugares en
los que aparezcan.



Introduccin a Python Mdulo III 8


Conclusin

A lo largo del presente mdulo introdujimos todos los conceptos y definiciones relacionados a las clases y objetos, como as
tambin aprendimos a reutilizar nuestro cdigo sin tener que escribir una y otra vez las mismas lenas. Lleva un tiempo
acostumbrarse a estos conceptos y manejarlos correctamente, sin embargo con un poco de prctica lograrn aplicarlos y lograr
sus programas sean ms eficientes, estn mejor organizados y no se vean forzados a escribir una y otra vez las mismas
sentencias.

La programacin Orientada a Objetos es uno d elos paradigmas ms utilizados en la actualidad. Si bien se ajusta a un montn de
situaciones que en el da a da nos podemos encontrar, en Python lo podemos combinar con otros paradigmas para sacar lo
mejor del lenguaje y aumentar nuestra productividad manteniendo un diseo ptimo del cdigo.

You might also like