Publicado el 5 de Agosto del 2017
1.070 visualizaciones desde el 5 de Agosto del 2017
798,5 KB
74 paginas
Creado hace 21a (22/03/2004)
Universidad de Deusto
. . . .
ESIDE
Python: descubre el poder del
lenguaje scripting de moda en la
comunidad open source
Dr. Diego Lz. de Ipiña Gz. de Artaza
http://paginaspersonales.deusto.es/dipina
Universidad de Deusto
. . . .
ESIDE
El otro lenguaje de programación
que empieza con 'P'
Python fue creado por Guido van Rossum (
http://www.python.org/~guido/)
Da este nombre al lenguaje inspirado por el
popular grupo cómico británico Monty Python
Guido creó Python durante unas
vacaciones de navidad en las que (al
parecer) se estaba aburriendo
Universidad de Deusto
. . . .
ESIDE
Hola Mundo en Python
#!/usr/bin/env python
print "Hola Mundo" # "Hola Mundo"
print "hola", "mundo" # "hola mundo"
print "Hola" + "Mundo" # "HolaMundo"
Universidad de Deusto
. . . .
ESIDE
Características de Python I
Muy legible y elegante
Imposible escribir código ofuscado
Simple y poderoso
Minimalista: todo aquello innecesario no hay que escribirlo (;,
{, }, '\n')
Muy denso: poco código hace mucho
Soporta objetos y estructuras de datos de alto nivel: strings,
Múltiples niveles de organizar código: funciones, clases,
listas, diccionarios, etc.
módulos, y paquetes
Python standard library (
http://www.python.org/doc/current/lib/lib.html) contiene un sinfín
de clases de utilidad
Si hay áreas que son lentas se pueden reemplazar por plugins
en C o C++, siguiendo la API para extender o empotrar Python
en una aplicación, o a través de herramientas como SWIG, sip
o Pyrex.
Universidad de Deusto
. . . .
ESIDE
Características de Python II
De scripting
No tienes que declarar constantes y variables antes de utilizarlas
No requiere paso de compilación/linkage
La primera vez que se ejecuta un script de Python se compila y
genera bytecode que es luego interpretado
Alta velocidad de desarrollo y buen rendimiento
Código interoperable (como en Java "write once run everywhere")
Se puede utilizar en múltiples plataforma (más aún que Java)
Puedes incluso ejecutar Python dentro de una JVM (Jython)
Open source
De propósito general
más
Razón por la cual la Python Library sigue creciendo y creciendo
Puedes hacer en Python todo lo que puedes hacer con C# o Java, o
Universidad de Deusto
. . . .
ESIDE
Peculiaridades sintácticas
Python usa tabulación (o espaciado) para mostrar
estructura de bloques
Tabula una vez para indicar comienzo de bloque
Des-tabula para indicar el final del bloque
Código en C/Java
Código en Python
if (x) {
if (y) {
f1();
}
f2();
}
if x:
if y:
f1()
f2()
Universidad de Deusto
. . . .
ESIDE
Python vs. Perl
Los dos están basados en un buen
entendimiento de las herramientas necesarias
para resolver problemas
Perl está basado en awk, sed, and shell scripting y
su misión es hacer las tareas de administradores de
sistemas más sencillas
Python está basado e inspirando por OOP (Object-
oriented programming)
Guido van Rossum diseñó un lenguaje simple, poderoso, y
elegante orientado a la creación de sistemas a partir de
componentes
Universidad de Deusto
. . . .
ESIDE
Python vs. Java
Java es un lenguaje de programación muy completo
que ofrece:
Amplio abanico de tipos de datos
Soporte para threads
Strong typing
Y mucho más ...
Python es un lenguaje de scripting:
No ofrece strong typing
Bueno para prototipos pero malo para grandes sistemas
Puede cascar en tiempo de ejecución
Todo lo que puedes hacer con Java también lo puedes
hacer con Python
Incluso puedes acceder a través de Python a las API de Java si
usas Jython (http://www.jython.org)
Universidad de Deusto
. . . .
ESIDE
Python vs. Jython
Python
También llamado Cpython
Implementación del lenguaje Python en C
Python C API permite extender Python con librerías
realizadas en C
Partes que requieren mayor rendimiento en Python
están implementadas en C o C++ y tan sólo
contienen una pequeña capa de Python encima
Jython
Implementación de Python en Java
Permite acceder a todas las APIs de Java
P.E. Podemos producir Swing GUIs desde Python
Universidad de Deusto
. . . .
ESIDE
¿Para qué [no] es útil?
Python no es el lenguaje perfecto, no es bueno para:
Programación de bajo nivel (system-programming), como
programación de drivers y kernels
Python es de demasiado alto nivel, no hay control directo sobre
memoria y otras tareas de bajo nivel
Aplicaciones que requieren alta capacidad de computo
No hay nada mejor para este tipo de aplicaciones que el viejo C
Python es ideal:
juntos
Como lenguaje "pegamento" para combinar varios componentes
Para llevar a cabo prototipos de sistema
Para la elaboración de aplicaciones cliente
Para desarrollo web y de sistemas distribuidos
Para el desarrollo de tareas científicas, en los que hay que
simular y prototipar rápidamente
Universidad de Deusto
. . . .
ESIDE
Instalar Python
Bajar versión de Python de
http://www.python.org/download/
Para Windows ejecutar instalador
Para Linux, usar rpms disponibles en:
http://www.python.org/2.3.3/rpms.html
rpm -iv
python2.3-2.3.3-pydotorg.i386.rpm
Universidad de Deusto
. . . .
ESIDE Usando Python desde línea
comando
Para arrancar el intérprete (Python interactivo) ejecutar:
$ python
Python 2.3.3 (#1, Dec 30 2003, 08:29:25)
[GCC 3.3.1 (cygwing special)] on cygwin
Type "help", "copyright", "credits" or "license" for more
information.
>>>
Un comando simple:
>>> print "Hola Mundo"
Hola Mundo
>>>
Para salir del intérprete Ctrl-D (en Linux) o Ctrl-Z (en Linux) o:
>>> import sys
>>> sys.exit()
$
Universidad de Deusto
. . . .
ESIDE Ejecutando programa
holamundo.py
Python desde script:
Guardar siguientes sentencias en fichero: holamundo.py
#!/usr/bin/env
python print "Hello World"
Ejecutar el script desde línea de comando:
$ python helloworld.py
Hello World
$
Universidad de Deusto
. . . .
ESIDE
Sentencias y bloques
Las sentencias acaban en nueva línea, no en ;
Los bloques son indicados por tabulación que sigue a una sentencia
acabada en ':'. E.j. (bloque.py):
# comentarios de línea se indican con carácter '#'
name = "Diego1" # asignación de valor a variable
if name == "Diego":
print "Aupa Diego"
else:
print "¿Quién eres?"
print "¡No eres Diego!"
$ python bloque.py
¿Quién eres?
¡No eres Diego!
Universidad de Deusto
. . . .
ESIDE
Identificadores
Los identificadores sirven para nombrar variables,
funciones y módulos
Deben empezar con un carácter no numérico y contener
letras, números y '_'
Python es case sensitive
Palabras reservadas:
and elif global or assert else if pass break
except import print class exec in raise
continue finally is return def for lambda try
del from not while
Variables y funciones delimitadas por __ corresponden
a símbolos implícitamente definidos:
__name__ nombre de función
__doc__ documentación sobre una función
__init__() constructor de una clase
Universidad de Deusto
. . . .
ESIDE
Tipos de datos I
Numéricos (integer, long integer, floating-point, and
complex)
>>> x = 4
>>> int (x)
4
>>> long(x)
4L
>>> float(x)
4.0
>>> complex (4, .2)
(4+0.2j)
Universidad de Deusto
. . . .
ESIDE
Tipos de datos II
Strings, delimitados por un par de (', " ,""")
Dos string juntos sin delimitador se unen
>>> print "Hi" "there"
Hithere
Los códigos de escape se expresan a través de '\':
>>>print '\n'
Raw strings
>>> print r'\n\\' # no se 'escapa' \n
Lo mismo ' que ", p.e. "\\[foo\\]" r'\[foo\]'
Algunos de los métodos que se pueden aplicar a un string son:
>>> len('La vida es mucho mejor con Python.')
>>> 34
>>> 'La vida es mucho mejor con Python.'.upper()
'LA VIDA ES MUCHO MEJOR CON PYTHON'
>>> "La vida es mucho mejor con Python".find("Python")
27
>>> "La vida es mucho mejor con Python".find('Perl')
-1
>>> 'La vida es mucho mejor con Python'.replace('Python', 'Jython')
'La vida es mucho mejor con Jython'
Universidad de Deusto
. . . .
ESIDE
Tipos de datos III
El módulo string de la Python library define
métodos para manipulación de strings:
>>> import string
>>> s1 = 'La vida es mejor con Python'
>>> string.find(s1, 'Python')
21
'%' es el operador de formateo de cadenas:
>>> provincia = 'Araba'
>>> "La capital de %s es %s" % (provincia,
"Gasteiz")
'La capital de Araba es Gasteiz'
Los caracteres de formateo son los mismos que en C, p.e. d, f, x
Universidad de Deusto
. . . .
ESIDE
Tipos de datos IV
Listas []
Indexadas por un entero comienzan en 0:
>>> meses = ["Enero", "Febrero"]
>>> print meses[0]
Enero
>>> meses.append("Marzo")
>>> print meses
['Enero', 'Febrero', 'Marzo']
Dos puntos (:) es el operador de rodajas, permite trabajar con una
porción de la lista, el elemento indicado por el segundo parámetro no se
incluye:
>>> print meses[1:2]
['Febrero']
Más (+) es el operador de concatenación:
>>> print meses+meses
['Enero', 'Febrero', 'Marzo', 'Enero', 'Febrero',
'Marzo']
Universidad de Deusto
. . . .
ESIDE
Tipos de datos IV
Las listas pueden contener cualquier tipo de objetos Python:
>>> meses.append (meses)
>>> print meses
['Enero', 'Febrero', 'Marzo', ['Enero', 'Febrero', 'Marzo' ]]
>>> meses.append(1)
['Enero', 'Febrero', 'Marzo', ['Enero', 'Febrero', 'Marzo' ], 1]
Para añadir un elemento a una lista:
>>>
Comentarios de: Python: descubre el poder del lenguaje scripting de moda en la comunidad open source (0)
No hay comentarios