Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Documento

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 6

CAPÍTULO 3 (resumen).

Funciones
3.1. Llamadas a funciones
Ya hemos visto un ejemplo de una llamada a una funci ́on: >>>
type("32")
<type ’string’>
El nombre de la funci ́on es type, y muestra el tipo de un valor
o de una variable. El valor o variable, llamado el argumento de
la funci ́on, ha de estar encerrado entre par é ntesis. Es
habitual decir que una funci ́on “toma” un argumento y
“devuelve” un resultado. El resultado se llama valor de
retorno.
En lugar de imprimir el valor de retorno, podemos asign ́arselo
a una variable.
>>> nereida = type("32")
>>> print nereida
<type ’string’>
O
>>> id(3)
134882108
>>> yanira = 3
>>> id(yanira)
134882108
Cada valor tiene un id, que es un valor u ́nico relacionado con
d ́onde se almacena en la memoria del computador. El id de
una variable es el id del valor al que hace referencia.

Conversio ́n de tipos
Python proporciona una colecci ́on de funciones internas que
convierten valores de un tipo a otro. La funci ́on int toma un
valor y lo convierte a un entero, si es posible, o da un error si
no es posible.
>>> int("32")
32
>>> int("Hola")
ValueError: invalid literal for int(): Hola
int tambi ́en convierte valores de coma flotante a enteros,
pero recuerde que siempre redondea hacia abajo:
>>> int(3.99999)
3
La funci ́on float que convierte enteros y cadenas en nu ́meros
en coma flotante:
>>> float(32)
32.0
>>> float("3.14159")
3.14159
Finalmente, est ́a la funci ́on str, que convierte a tipo string:
>>> str(32)
’32’
>>> str(3.14149)
’3.14149’
Coerción de tipos.
>>> minuto = 59
>>> float(minuto) / 60.0
0.983333333333
Funciones matemáticas.
Antes de poder usar las funciones de un m ́odulo, tenemos
que importarlo:
>>>import math
Para llamar a una de las funciones, tenemos que especificar el
nombre del m ́odulo y el nombre de la funci ́on, separados por
un punto. A esto se le llama notaci ́on de punto:
decibelio = math.log10 (17.0)
angulo = 1.5
altura = math.sin(angulo)
Por ejemplo, para hallar el seno de 45 grados, calcule primero
el ́angulo en radianes y luego halle el seno:
grados = 45
angulo = grados * 2 * math.pi / 360.0
math.sin(angulo)
La constante pi tambi ́en es parte del m ́odulo math. Si se sabe
la geometr ı́ a, puede verificar el resultado compar á ndolo con
el de la ra ́ız cuadrada de 2, dividida entre 2.
>>> math.sqrt(2) / 2.0
0.70710678118

El primer par de funciones que escribiremos no tienen par


á metros, de manera que su sintaxis es:
def nueva_linea():
print
Esta funci ́on se llama nueva linea. Los par ́entesis vac ́ıos
indican que no tiene par ́ametros. Contiene una u ́nica
sentencia, que muestra como salida un car ́acter de nueva l
́ınea (es lo que sucede cuando utiliza una orden print sin
argumentos).
Llamamos entonces a la funci ́on nueva usando la misma
sintaxis que usamos para las funciones internas:
print "Primera linea."
nueva_linea()
print "Segunda linea."
The output of this program is
Primera linea.
Podemos llamar varias veces a la misma funci ́on:
print "Primera linea."
nueva_linea()
nueva_linea()
nueva_linea()
print "Segunda linea."
La función imprimeDoble sirve con cualquier tipo (de dato)
que se pueda im- primir:
>>> imprimeDoble(’Jam ́on’) Jam ́on Jam ́on
>>> imprimeDoble(5)
55
>>> imprimeDoble(3.14159)
3.14159 3.14159

Las variables y los parámetros son locales


Cuando crea una variable dentro de una funci ́on, s ́olo existe
dentro de dicha funci ́on, y no puede usarla fuera de ella. Por
ejemplo, la funci ́on
>>> def catDoble(parte1, parte2):
... cat = parte1 + parte2
... imprimeDoble(cat)
...
>>>

30 Funciones
toma dos argumentos, los concatena y luego imprime el
resultado dos veces. Podemos llamar a la funci ́on con dos
cadenas:
>>> cantus1 = "Die Jesu domine, "
>>> cantus2 = "Dona eis requiem."
>>> catDoble(cantus1, cantus2)
Die Jesu domine, Dona eis requiem. Die Jesu domine, Dona
eis requiem.
Cuando catDoble termina, la variable cat se destruye. Si trat
á semos de impri- mirla, obtendr ́ıamos un error:
>>> print cat
NameError: cat
Diagramas de pila
Para mantener el rastro de que variables pueden usarse y d
́donde, a veces es útil dibujar un diagrama de pila. Como los
diagramas de estado, los diagramas de pila muestran el valor
de cada variable, pero también muestran la función a la que
cada variable pertenece.
Cada función on se representa por una caja con el nombre de
la función junto a ́el. Los parámetros y variables que
pertenecen a una función on van dentro. Por ejemplo, el
diagrama de stack para el programa anterior tiene este
aspecto:

El orden de la pila muestra el flujo de ejecución imprimeDoble


fue llamado por catDoble y a catDoble lo invoc ́o main , que es
un nombre especial de la función más alta. alta. Cuando crea
una variable fuera de cualquier funci ́on, pertenece a main .
En cada caso, el par á metro se refiere al mismo valor que el
argumento corres- pondiente. As ́ı que parte1 en catDoble
tiene el mismo valor que cantus1 en
main .
Si sucede un error durante la llamada a una funci ́on, Python
imprime el nombre de la funci ́on y el nombre de la funci ́on
que la llam ́o, y el nombre de la funci ́on quellam ́oa ́esa,yas
́ıhasta main .
Por ejemplo, si intentamos acceder a cat desde
imprimeDoble, provocaremos un NameError:
Traceback (innermost last):
File "test.py", line 13, in __main__
catDoble(cantus1, cantus2)
File "test.py", line 5, in catDoble
imprimeDoble(cat)
File "test.py", line 9, in imprimeDoble
print cat
NameError: cat
Esta lista de funciones de llama traceback (traza inversa). Le
dice a usted en qu é archivo de programa sucedi ́o el error, y
en qu ́e l ı́ nea, y qu é funciones se ejecutaban en ese
momento. Tambi é n muestra la l ́ınea de c ́odigo que caus ́o el
error.
F ́ıjese en la similaridad entre la traza inversa y el diagrama de
pila. No es una coincidencia.

También podría gustarte