Publicado el 23 de Junio del 2018
933 visualizaciones desde el 23 de Junio del 2018
297,6 KB
84 paginas
Creado hace 13a (11/01/2011)
Programación en Python
Departamento de Sistemas Telemáticos y Computación (GSyC)
gsyc-profes (arroba) gsyc.es
Marzo de 2010
GSyC - 2010
Programación en Python
1
c2010 GSyC
Algunos derechos reservados.
Este trabajo se distribuye bajo la licencia
Creative Commons Attribution Share-Alike 3.0
GSyC - 2010
Programación en Python
2
Contenidos
1 El Lenguaje Python
2 Programación en Python
Tipos de objeto
Cadenas
Listas
Diccionarios
Tuplas
Cadenas Unicode
Sentencias de control
Funciones
Ficheros
Cadenas de documentación
Excepciones
3 Librerías
Librería commands
Librería sys
Librerías os, shutil
Librerías pickle: Persistencia
GSyC - 2010
Programación en Python
3
El Lenguaje Python
El Lenguaje Python
Lenguaje de autor creado por Guido van Rossum en 1989
Muy relacionado originalmente con el S.O. Amoeba
Disponible en Unix, Linux, MacOS, Windows,
Libre
Lenguaje de Script Orientado a Objetos (no muy puro)
Muy alto nivel
Librería muy completa
GSyC - 2010
Programación en Python
4
El Lenguaje Python
Verdadero lenguaje de propósito general
Sencillo, compacto
Sintaxis clara
Interpretado => Lento
Ofrece persistencia
Recolector de basuras
Muy maduro y muy popular
Aplicable para software de uso general
GSyC - 2010
Programación en Python
5
El Lenguaje Python
Programa python
for x in xrange(1000000):
print x
Su equivalente Java
public class ConsoleTest {
public static void main(String[] args) {
for (int i = 0; i < 1000000; i++) {
System.out.println(i);
}
}
}
GSyC - 2010
Programación en Python
6
El Lenguaje Python
Programa python
for i in xrange(1000):
x={}
for j in xrange(1000):
x[j]=i
x[j]
Su equivalente Java
import java.util.Hashtable;
public class HashTest {
public static void main(String[] args) {
for (int i = 0; i < 1000; i++) {
Hashtable x = new Hashtable();
for (int j = 0; j < 1000; j++) {
x.put(new Integer(i), new Integer(j));
x.get(new Integer(i));
}
}
} }
GSyC - 2010
Programación en Python
7
Librerías
El Lenguaje Python
Python dispone de librerías Nativas y Normalizadas para
Cadenas, listas, tablas hash, pilas, colas
Números Complejos
Serialización, Copia profunda y Persistencia de Objetos
Regexp
Unicode, Internacionalización del Software
Programación Concurrente
Acceso a BD, Ficheros Comprimidos, Control de Cambios...
GSyC - 2010
Programación en Python
8
El Lenguaje Python
Librerías relacionadas con Internet:
CGIs, URLs, HTTP, FTP,
pop3, IMAP, telnet
Cookies, Mime, XML, XDR
Diversos formatos multimedia
Criptografía
GSyC - 2010
Programación en Python
9
El Lenguaje Python
La referencia sobre todas las funciones de librería podemos
encontrarlas en la documentación oficial, disponible en el web en
muchos formatos
Hasta la versión 2.5.4 (diciembre de 2008), se denomina
python library reference
Desde la versión 2.6, se denomina python standard library
GSyC - 2010
Programación en Python
10
Inconvenientes de Python
El Lenguaje Python
Además de su velocidad limitada y necesidad de intérprete
(Como todo lenguaje interpretado)
No siempre compatible hacia atrás
Uniformidad.
Ej: función len(), método items()
Algunos aspectos de la OO
Python is a hybrid language. It has functions for procedural
programming and objects for OO programming. Python bridges the
two worlds by allowing functions and methods to interconvert using
the explicit “self” parameter of every method def. When a function
is inserted into an object, the first argument automagically becomes
a reference to the receiver.
...
GSyC - 2010
Programación en Python
11
Programación en Python
El intérprete de python se puede usar
En modo interactivo
koji@mazinger:~$ python
Python 2.5.2 (r252:60911, Oct 5 2008, 19:24:49)
[GCC 4.3.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> print "hola mundo"
hola mundo
>>> 3/2
1
>>> 3/2.0
1.5
Mediante scripts
#!/usr/bin/python -tt
print "hola mundo"
euros=415
pesetas=euros*166.386
print str(euros) + " euros son "+ str(pesetas) + " pesetas"
#esto es un comentario
GSyC - 2010
Programación en Python
12
Programación en Python
La línea #!/usr/bin/python indica al S.O. dónde está el
intérprete que sabe procesar el fuente
Debe ser exactamente la primera línea
No puede haber espacios entre la admiración y la barra
#Este ejemplo es doblemente incorrecto
#! /usr/bin/python -tt
# ¡MAL!
En distintos Unix el intérprete puede estar en distintos sitios. Para
aumentar la compatibilidad, a veces se usa
#!/usr/bin/env python
print "Hola mundo"
Aunque (en Linux) esto no permite pasar parámetros como -tt
GSyC - 2010
Programación en Python
13
Operadores
Programación en Python
En orden de precedencia decreciente:
Unary operators
Power
Multiplication, division, modulo
+x, -x, ~x
x ** y
x * y, x / y, x % y
x + y, x - y
x << y, x >> y
x & y
x | y
x < y, x <= y, x > y, x >= y, x == y, x != y,
x <> y, x is y, x is not y, x in s, x not in s
Bitwise and
Bitwise or
Addition, subtraction
Bit shifting
Comparison, identity,
sequence membership tests
Logical negation
not x
x and y
lambda args: expr
Logical and
Anonymous function
GSyC - 2010
Programación en Python
14
Programación en Python
Identificadores (nombre de objetos, de funciones...):
Letras inglesas de ’a’ a ’z’, en mayúsculas o minúsculas. Barra
baja ’ ’ y números
Sensible a mayúsculas/minúsculas
Se puede usar utf-8 y latin-1 en las cadenas y comentarios
Si el editor no marca adecuadamente la codificación del
fichero, aparecerá un error
SyntaxError: Non-ASCII character ’\xc3’ in file ./holamundo.py on
line 4, but no encoding declared;
see http://www.python.org/peps/pep-0263.html for details
y será necesario añadir en la segunda línea del fuente
# -*- coding: utf-8 -*-
o bien
# -*- coding: iso-8859-1 -*-
Python es
Dinámicamente tipado (frente a estáticamente tipado)
Fuertemente tipado (frente a débilmente tipado)
GSyC - 2010
Programación en Python
15
Programación en Python
En Python la declaración de variables es implícita
(no hay declaración explícita)
Las variables “nacen” cuando se les asigna un valor
Las variables “desaparecen” cuando se sale de su ámbito
La declaración implícita de variables como en perl puede
provocar resultados desastrosos
#!/usr/bin/perl
$sum_elementos= 3 + 4 + 17;
$media=suma_elementos / 3;
print $media;
# y provocamos resultado incorrecto
# deletreamos mal la variable
Pero Python no permite referenciar variables a las que nunca
se ha asignado un valor.
#!/usr/bin/python
sum_elementos= 3 + 4 + 17
media=suma_elementos / 3
print media;
# deletreamos mal la variable
# y el intéprete nos avisa con un error
GSyC - 2010
Programación en Python
16
Funciones predefinidas
Programación en Python
abs() valor absoluto
float() convierte a float
int() convierte a int
str() convierte a string
round() redondea
raw_input() acepta un valor desde teclado
GSyC - 2010
Programación en Python
17
Sangrado y separadores de sentencias
Programación en Python
¡En Python NO hay llaves ni begin-end para encerrar bloques
de código! Un mayor nivel de sangrado indica que comienza
un bloque, y un menor nivel indica que termina un bloque.
Las sentencias se terminan al acabarse la línea (salvo casos
especiales donde la sentencia queda “abierta”: en mitad de
expresiones entre paréntesis, corchetes o llaves).
El carácter \ se utiliza para extender una sentencia más
allá de una linea, en los casos en que no queda “abierta”.
El carácter : se utiliza como separador en sentencias
compuestas. Ej.: para separar la definición de una función de
su código.
El carácter ; se utiliza como separador de sentencias escritas
en la misma línea.
GSyC - 2010
Programación en Python
18
Programación en Python
La recomendación oficial es emplear 4 espacios
PEP-8 Style Guide for Python Code
David Goodger, Code Like a Pythonista: Idiomatic Python
Traducción al español:
Programa como un Pythonista: Python Idiomático
Emplear 8 espacios o emplear tabuladores es legal
Mezclar espacios con tabulares es muy peligroso.
Para que el intérprete lo advierta
#!/usr/bin/python -t
Para que el intérprete lo prohiba
#!/usr/bin/python -tt
GSyC - 2010
Programación en Python
19
Tipos de objeto
Programación en Python
Tipos de objeto
En python todo son objetos: cadenas, listas, diccionarios,
funciones, módulos. . .
En los lenguajes de scripting más antiguos como bash o tcl, el
único tipo de datos es la cadena
Los lenguajes imperativos más habituales (C, C++,
pascal. . . ) suelen tener (con variantes) los tipos: booleano,
carácter, cadena, entero, real y matriz
Python tiene booleanos, enteros, reales y cadenas. Y además,
cadenas unicode, listas, tuplas, números complejos,
diccionarios, conjuntos...
En terminología python se denominan tipos de objeto
Estos tipos de objeto de alto nivel facilitan mucho el trabajo
del programador
GSyC - 2010
Programación en Python
20
Comprobación de tipos
Programación en Python
Tipos de objeto
#!/usr/bin/python -tt
import types
if type("a") == types.StringType:
print "ok, es una cadena"
else:
print "no es una cadena"
Tipos de objeto habituales:
BooleanType
IntType
LongType
FloatType
StringType
ListType
TupleType
DictType
GSyC - 2010
Programación en Python
21
Cadenas
Programación en Python
Cadenas
No existe tipo char
Comilla simple o doble
print "hola"
print ’hola’
print ’me dijo "hola"’
más legible que print ’me dijo \’hola\’’
Puede haber caracteres especiales
print "hola\nque tal"
Cadenas crudas
print r"""hola\nque tal"""
GSyC - 2010
Programación en Python
22
Programación en Python
Cadenas
Una cadena se puede expandir en más de una línea
print "hola\
que tal "
El operador + concatena cadenas, y el * las repite un número
entero de veces
Se puede acceder a los caracteres de cadenas mediante índices
y rodajas como en las listas
Las cadenas s
Comentarios de: Programación en Python (0)
No hay comentarios