Taller Python Básico (compiladores)
Enviado por Sandra75 • 20 de Noviembre de 2017 • 2.333 Palabras (10 Páginas) • 426 Visitas
...
persona['apellido'] = "Linares"
Al igual que las listas, los diccionarios pueden contener otros diccionarios u otras listas. Naturalmente, también las listas pueden contener diccionarios. De este modo, se pueden conseguir estructuras de datos muy robustas.
3. Funciones Abstracción. Para definir una función, se utiliza la palabra reservada def así:
def cuadrado(x):
return x*x
print cuadrado(2) 4
Todos los parámetros en Python se pasan por valor de referencia a objetos ?? (similar a java)
Por valor:
def cuadrado(y):
y=y*y return y y=5 print 'antes de enviar como parametro: ', y cuad=cuadrado(y) print 'despues de enviar como parametro: ', y print cuad
Por Referencia:
def f(x, y):
x = x + 3 y.append(23) print x, y
x = 22 y = [22] f(x, y) print x, y
Python tiene todo tipo de lujos, como argumentos con nombre y argumentos por omisión y puede manejar un número variable de argumentos para una función. Para obtener más información, consultar la sección 4.6 del tutorial de Python.
La palabra clave return detiene la ejecución de la función y devuelve el resultado indicado.
Algo que podría resultar interesante conocer, sin embargo, es que las funciones son valores en Python. Así que, si tiene una función como cuadrado, podría hacer cosas como:
---------------------------------------------------------------
cosa = cuadrado cosa(2) Muestra 4
Para llamar a una función sin argumentos se debe recordar escribir funcion() y no funcion. La segunda forma sólo devuelve la función en sí, como valor (esto vale también para los métodos de los objetos).
Es posible retornar varios valores en una tupla:
def divide (a, b): q = a / b r = a – q / b return (q, r) # los paréntesis son opcionales
quotient, remainder = divide (1456, 33)
4. Objetos. Python es un lenguaje orientado a objetos. La palabra class, define una clase, de este modo:
class Cesta:
# Recuerde siempre el argumento self def __init__(self,contenido=[]): # self.contenido = contenido def anadir(self,elemento):
self.contenido.append(elemento) def mostrar(self): resultado = "" print "Contiene: " for elemento in self.contenido:
print elemento
Notas:
1. Todos los métodos (funciones de un objeto) reciben un argumento adicional al principio de la lista de
argumentos, que contiene el propio objeto. Este argumento, por convención, se suele llamar self (que significa 'uno mismo'), como en el ejemplo. 2. A los métodos se los llama de este modo: objeto.metodo(arg1,arg2). 3. Alguno nombres de método, como __init__ están predefinidos, y significan cosas especiales.
__init__ es el nombre del constructor de la clase, es decir, es la función a la que se llama cuando se crea una instancia. 4. Algunos argumentos son opcionales y reciben un valor dado (según lo mencionado antes, en la sección
de funciones). Esto se realiza escribiendo la definición así:
def funcion(edad=32): ... Aquí, se puede llamar a funcion con uno o cero parámetros. Si no se pone ninguno, el parámetro edad tendrá el valor 32.
5. Las comillas invertidas convierten un objeto en su representación como cadena (así que si elemento contiene el número 1, `elemento` es lo mismo que "1" mientras que 'elemento' es una cadena literal).
---------------------------------------------------------------
6. El signo más ”+” se utiliza también para concatenar listas. Las cadenas son sólo listas de caracteres
(lo que significa que se puede utilizar indexado, rango y la función len en ellas). 7. Ningún método o variable miembro es protegido ni privado. La encapsulación es, en su mayoría,
cuestión de estilo al programar.
Lógica de cortocircuito...
Todos los valores de Python se pueden utilizar como valores lógicos. Algunos, como [], 0, "" y None representan el valor lógico "falso", mientras el resto (como [0], 1 or "Hola, mundo") representan el valor lógico "verdadero".
Las expresiones lógicas como a and b se evalúan de este modo: Primero, se comprueba si a es verdadero. Si no, simplemente se devuelve su valor. Si sí, simplemente se devuelve b (que representa el valor lógico de la expresión). La lógica correspondiente a a or b es: Si a es verdadero, devolver su valor. Si no, devolver b.
Este mecanismo hace que and y or se comporten como los operadores lógicos que supuestamente implementan, pero también permite escribir expresiones condicionales como por ejemplo, el código
if a:
print a else:
print b
Se puede sustituir por:
print a or b
Esto es lo que hacemos en el método Cesta.__init__ . El argumento contenido tiene el valor por defecto None (que es, entre otras cosas, falso). Por lo tanto, para comprobar si tenía valor, podríamos escribir:
if contenido:
self.contenido = contenido else:
self.contenido = []
Para utilizar una clase se hace una instancia (objeto de la clase) de Cesta:
b = Cesta(['manzana','naranja'])
...