Trabajo de python
Upcoming SlideShare
Loading in...5
×
 

Trabajo de python

on

  • 185 views

 

Statistics

Views

Total Views
185
Views on SlideShare
185
Embed Views
0

Actions

Likes
0
Downloads
1
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft Word

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Trabajo de python Trabajo de python Document Transcript

  • UNIVERSIDAD DE ORIENTE NÚCLEO DE ANZOÁTEGUI ESCUELA DE INGENIERÍA Y CIENCIAS APLICADAS DEPARTAMENTO DE ELECTRICIDAD Profesor: Navarro, Danilo Bachiller: González, Edgar C.I: 20.903.274 Sección: 03 Barcelona, 25 de marzo de 2011
  • 1. ¿Qué Es Python? Es un lenguaje de programación de alto nivel cuya filosofía hace hincapié en una sintaxis muy limpia y que favorezca un código legible. Se trata de un lenguaje de programación multiparadigma ya que soporta orientación a objetos, programación imperativa y, en menor medida, programación funcional. Es un lenguaje interpretado, usa tipado dinámico, es fuertemente tipado y es multiplataforma. Es administrado por la Python Software Foundation. Posee una licencia de código abierto, denominada Python Software Foundation License, que es compatible con la Licencia pública general de GNU a partir de la versión 2.1.1, e incompatible en ciertas versiones anteriores. 2. Historia de python. Python fue creado a finales de los ochenta por Guido van Rossum en el National Research Institute for Mathematics and Computer Science (CWI), en los Países Bajos, como un sucesor del lenguaje de programación ABC, capaz de manejar excepciones e interactuar con el sistema operativo Amoeba. El nombre del lenguaje proviene de la afición de su creador original, Guido van Rossum, por los humoristas británicos Monty Python. Van Rossum es el principal autor de Python, y su continuo rol central en decidir la dirección de Python es reconocido, refiriéndose a él como Benevolente Dictador Vitalicio (en inglés: Benevolent Dictator for Life, BDFL). En 1991, van Rossum publicó el código de la versión 0.9.0 en alt.sources. En esta etapa del desarrollo ya estaban presentes clases con herencia, manejo de excepciones, funciones y los tipos modulares, como: str, list, dict, entre otros. Además en este lanzamiento inicial aparecía un sistema de módulos adoptado de Modula-3; van Rossum describe el módulo como “una de las mayores unidades de programación de Python”. El modelo de excepciones en Python es parecido al de Modula-3, con la adición de una cláusula else. En el año 1994 se formó comp.lang.python, el foro de discusión principal de Python, marcando un hito en el crecimiento del grupo de usuarios de este lenguaje.
  • Python alcanzó la versión 1.0 en enero de 1994. Una característica de este lanzamiento fueron las herramientas de la programación funcional: lambda,reduce, filter y map. Van Rossum explicó que “hace 12 años, Python adquirió lambda, reduce (), filter() y map(), cortesía de un hacker de Lisp que las extrañaba y que envió parches”. El donante fue Amrit Prem; no se hace ninguna mención específica de cualquier herencia de Lisp en las notas de lanzamiento. La última versión liberada proveniente de CWI fue Python 1.2. En 1995, van Rossum continuó su trabajo en Python en la Corporation for National Research Initiatives (CNRI) en Reston,Virginia, donde lanzó varias versiones del software. Durante su estancia en CNRI, van Rossum lanzó la iniciativa Computer Programming for Everybody (CP4E), con el fin de hacer la programación más accesible a más gente, con un nivel de alfabetización básico en lenguajes de programación, similar a la alfabetización básica en inglés y habilidades matemáticas necesarias por muchos trabajadores. Python tuvo un papel crucial en este proceso: debido a su orientación hacia una sintaxis limpia, ya era idóneo, y las metas de CP4E presentaban similitudes con su predecesor, ABC. El proyecto fue patrocinado por DARPA. En el año 2007, el proyecto CP4E está inactivo, y mientras Python intenta ser fácil de aprender y no muy arcano en su sintaxis y semántica, alcanzando a los no-programadores, no es una preocupación activa. En el año 2000, el equipo principal de desarrolladores de Python se cambió a BeOpen.com para formar el equipo BeOpen PythonLabs. CNRI pidió que la versión 1.6 fuera pública, continuando su desarrollo hasta que el equipo de desarrollo abandonó CNRI; su programa de lanzamiento y el de la versión 2.0 tenían una significativa cantidad de traslapo. Python 2.0 fue el primer y único lanzamiento de BeOpen.com. Después que Python 2.0 fuera publicado por BeOpen.com, Guido van Rossum y los otros desarrolladores de PythonLabs se unieron en Digital Creations. Python 2.0 tomó una característica mayor del lenguaje de programación funcional Haskell: listas por comprensión. La sintaxis de Python para esta construcción es muy similar a la de Haskell, salvo por la preferencia de los caracteres de puntuación en Haskell, y la preferencia de Python por palabras claves alfabéticas. Python 2.0 introdujo además un sistema de recolección capaz de recolectar referencias cíclicas.
  • Posterior a este doble lanzamiento, y después que van Rossum dejó CNRI para trabajar con desarrolladores de software comercial, quedó claro que la opción de usar Python con software disponible bajo GNU GPL era muy deseable. La licencia usada entonces, la Python License, incluía una cláusula estipulando que la licencia estaba gobernada por el estado deVirginia, por lo que, bajo la óptica de los abogados de Free Software Foundation (FSF), se hacía incompatible con GPL. CNRI y FSF se relacionaron para cambiar la licencia de software libre de Python para hacerla compatible con GPL. En el año 2001, van Rossum fue premiado con FSF Award for the Advancement of Free Software. Python 1.6.1 es esencialmente el mismo que Python 1.6, con unos pocos arreglos de bugs, y con una nueva licencia compatible con GPL. 3. De Donde Viene El Nombre Python. El creador del lenguaje es un europeo llamado Guido Van Rossum. Hace ya más de una década que diseño Python, ayudado y motivado por su experiencia en la creación de otro lenguaje llamado ABC. El objetivo de Guido era cubrir la necesidad de un lenguaje orientado a objetos de sencillo uso que sirviese para tratar diversas tareas dentro de la programación que habitualmente se hacía en Unix usando C. El desarrollo de Python duró varios años, durante los que trabajó en diversas compañías de Estados Unidos. En el 2000 ya disponía de un producto bastante completo y un equipo de desarrollo con el que se había asociado incluso en proyectos empresariales. Actualmente trabaja en Zope, una plataforma de gestión de contenidos y servidor de aplicaciones para el web, por supuesto, programada por completo en Python. 4. Características Del Lenguaje De Python. Propósito general Se pueden crear todo tipo de programas. No es un lenguaje creado específicamente para la web, aunque entre sus posibilidades sí se encuentra el desarrollo de páginas.
  • Multiplataforma Hay versiones disponibles de Python en muchos sistemas informáticos distintos. Originalmente se desarrolló para Unix, aunque cualquier sistema es compatible con el lenguaje siempre y cuando exista un intérprete programado para él. Interpretado Quiere decir que no se debe compilar el código antes de su ejecución. En realidad sí que se realiza una compilación, pero esta se realiza de manera transparente para el programador. En ciertos casos, cuando se ejecuta por primera vez un código, se producen unos (bytecodes) que se guardan en el sistema y que sirven para acelerar la compilación implícita que realiza el intérprete cada vez que se ejecuta el mismo código. Interactivo Python dispone de un intérprete por línea de comandos en el que se pueden introducir sentencias. Cada sentencia se ejecuta y produce un resultado visible, que puede ayudarnos a entender mejor el lenguaje y probar los resultados de la ejecución de porciones de código rápidamente. Orientado a Objetos La programación orientada a objetos está soportada en Python y ofrece en muchos casos una manera sencilla de crear programas con componentes reutilizables. Funciones y librerías Dispone de muchas funciones incorporadas en el propio lenguaje, para el tratamiento de strings, números, archivos, etc. Además, existen muchas librerías que podemos importar en los programas para tratar temas específicos como la programación de ventanas o sistemas en red o cosas tan interesantes como crear archivos comprimidos en .zip.
  • Sintaxis clara Por último, destacar que Python tiene una sintaxis muy visual, gracias a una notación identidad (con márgenes) de obligado cumplimiento. En muchos lenguajes, para separar porciones de código, se utilizan elementos como las llaves o las palabras clave (begin y end). Para separar las porciones de código en Python se debe tabular hacia dentro, colocando un margen al código que iría dentro de una función o un bucle. Esto ayuda a que todos los programadores adopten unas mismas notaciones y que los programas de cualquier persona tengan un aspecto muy similar. 5. Filosofía Del Python Los usuarios de Python se refieren a menudo a la Filosofía Python que es bastante análoga a la filosofía de Unix. El código que sigue los principios de Python de legibilidad y transparencia se dice que es "pythonico". Contrariamente, el código opaco u ofuscado es bautizado como "no pythonico" ("unpythonic" en inglés). Estos principios fueron famosamente descritos por el desarrollador de Python Tim Peters en El Zen de Python  Bello es mejor que feo.  Explícito es mejor que implícito.  Simple es mejor que complejo.  Complejo es mejor que complicado.  Plano es mejor que anidado.  Disperso es mejor que denso.  La legibilidad cuenta.  Los casos especiales no son tan especiales como para quebrantar las reglas.  Aunque lo práctico gana a la pureza.  Los errores nunca deberían dejarse pasar silenciosamente.  A menos que hayan sido silenciados explícitamente.  Frente a la ambigüedad, rechaza la tentación de adivinar.  Debería haber una -y preferiblemente sólo una- manera obvia de hacerlo.  Aunque esa manera puede no ser obvia al principio a menos que usted sea holandés.  Ahora es mejor que nunca.  Aunque nunca es a menudo mejor que ya mismo.  Si la implementación es difícil de explicar, es una mala idea.  Los espacios de nombres (namespaces) son una gran idea ¡Hagamos más de esas cosas!
  • Líneas lógicas y físicas Línea lógica: una o más líneas físicas, siguiendo las reglas de juntar líneas. Explícita '' al final del renglón. Implícita (, [, y { pueden continuarse en siguiente línea física. Varias instrucciones en el mismo renglón: separadas con ;. Objetos básicos Todo dato en python, incluso el código mismo, es un objeto. Los objetos tienen: identidad dirección en memoria, no cambia id() tipo define qué operaciones y valores puede tomar type() valor mutable, inmutable Algunos objetos son contenedores, es decir, tiene referencias a otros objetos. Los tipos básicos son:  Números. Valor único inmutable  Secuencias. Contenedor. Conjunto ordenado, índices son números naturales. Mutables e inmutables.  Mapeos. Contenedor. Conjunto sin orden, índices pueden ser un conjunto arbitrario excepto listas o diccionarios. Mutable.  Objetos llamables. Funciones internas o definidas por el usuario, métodos, módulos internos o definidos por el usuario, clases, instancias de una clase, archivos.
  • Números inmutables enteros sencillos -2,147,483,648 a 2,147,483,647 OverflowError enteros largos sin límite punto flotante doble precisión complejos pareja de números de punto flotante z.real, z.imag Secuencias inmutables cadenas '' 'a' ``hola`` ``````hola ``````& tuples ( ), (1,), (1,2) mutables listas [ ], [1], [1,2,3] Mapeos mutables diccionarios { },{a:123, b:456} dbm, gdbm Método: función que pertenece a un objeto. Valores lógicos Falso Valor cero, contenedor vacío, None Verdadero Todo lo demás, Ellipsis. Funciones cmp( x, y ) 0 si x=y, 1 si x>y, -1 si x<y
  • Números Enteros decimal 234890 octal 0766 hexadecimal 0x0fee Enteros largos 1L Punto flotante 1.5, 1e100 Complejos ( 5, 7j ) Funciones int( x, [base] ) str o int -> int trunca long( x ) str o int -> long float( x ) str o int -> float hex( i ) int -> str oct( x ) int -> str round( x, n) float -> float, n=0 trunc( x ) xxx -> xxx abs( x ) valor absoluto Secuencias inmutables cadenas '' 'a' 'ab' tuplas () (1,) (1,2) mutables listas [] [0] [0,1]
  • Elementos nombre[0] primer elemento nombre[1] segundo elemento nombre[-1] último elemento nombre[-2] penúltimo elemento Índice fuera de rango es un error. Secciones Nombre [índice inferior: índice superior] Longitud del corte = índice superior - índice inferior nombre[:fin] Primer índice omitido vale 0. nombre[inicio:] Segundo índice omitido vale tamaño del objeto. nombre[:] Copia del objeto. nombre[0:1] Primer elemento. nombre[0:2] Primero y segundo elementos nombre[-2:] Últimos dos elementos Índices fuera de rango se aceptan: topan con 0 y el tamaño del objeto Nombre[:i] + nombre[i:] es igual a nombre. Funciones max(s Mayor elementos de s min( s ) Menor elementos de s len( s ) Cantidad de elementos
  • Operadores + Concatenación. * Multiplicación. 'aaa' 'bbb' Concatenación implícita. > < == Comparaciones - lexicográficamente. e[not] in s Membresía Programación funcional range( [inicio,] fin [, incremento] ) inicio=0, incremento=1[0, 1, ... incremento < fin] inicio+i*incremento < fin [inicio, inicio+i*incremento, ...] xrange() ídem, para rangos muy grandes filter( función, secuencia ) if función( elemento ): tomar elemento map( función, secuencia [,secuencia...] ) función( elemento [, elemento...] ) reduce( función, secuencia ) función( elemento0, elemento1), etc. zip( secuencia [,secuencia...] ) Lista de tuplas con elemento i de cada secuencia) Cadenas ''& Cadena vacía 'c' Caracter 'abc' Comillas sencillas ``abc``& Comillas dobles 'dice ``hola``' Comillas dobles dentro de sencillas ``buyer's guide``& Comilla sencilla dentro de dobles '``buyer's`` guide' Comilla con escape ``````hola``````& Pueden contener varios renglones y comillas. '''hola''' ídem
  • Métodos capitalize() Iniciales con mayúsculas s.join( secuencia ) Concatena secuencia con la cadena s lower() Minúsculas lstrip() Quita espacio en blanco al inicio rstrip() Quita espacio en blanco al final splitlines( [keepends]) Lista de renglones strip() Quita espacio en blanco upper() Mayúsculas Caracteres Son cadenas de longitud 1, no hay tipo char. ord( c ) código ascii del caracter chr( i ) caracter correspondiente str( o ) cadena para imprimir representación del objeto repr( o ) ídem, para usarse en eval() Caracteres especiales Secuencia de escape Significado ' ' ¨ `` f formfeed n linfeed r carriage return t tab ooo caracter ascii ooo octal
  • Tuplas tuple( secuencia ) tupla con los elementos de la secuencia Listas Métodos append(x) Agrega un elemento. Equivale a a[len(a):] = [x] extend(L) Extiende la lista agregando los elementos de la lista. Equivale a[len(a):] = L insert( i, x) Inserta un elemento en la posición dada. insert( 0, x) Inserta al principio remove(x) Elimina el primer elemento cuyo valor es x. Error si no existe pop([i]) Elimina el elemento en la posición dada, y regresa su valor. Sin parámetro es el último elemento. index(x) Regresa el índice del primer elemento con valor x. Error si no existe count(x) Regresa el número de veces que x aparece en la lista. sort([cmpfunc]) Ordena los elementos, sobre la lista misma. cmpfunc( x y, ) regresa 1 si x>y, 0 si x==y, -1 si x<y. cmp(x, y) reverse() Ordena los elementos al revés, sobre la lista misma. Funciones y operadores del a[n] Borra elemento del[ x:y] Borra sección list( secuencia ) Lista con elementos de la secuencia
  • Usos Pila LIFO append(x), pop() Cola FIFO append(x), pop(0) Matriz L[r][c] Lista recursiva L.append(L) Diccionarios Operaciones y métodos len(a) Cantidad de elementos en a a[k] Elemento de a cuya llave es k (subscripción) a[k] = x Asignar valor x a a[k] del a[k] Eliminar a[k] de a a.clear() Eliminar todos los elementos de a a.copy() Una copia de a a.has_key(k) 1 si a tiene llave k, 0 de lo contrario a.items() Una copia de la lista de parejas (llave, valor) de a a.keys() Una copia de la lista de llaves de a a.update(b) for k, v in b.items(): a[k] = v a.values() Una copia de la lista de valores de a a.get(k[, x]) a[k] si a.has_key(k), x de lo contrario Código eval( expresión ) Evalúa expresión exec( comando) Ejecuta instruccion(es)
  • Asignaciones Nombre = expresión a,b = c,d (pack, unpack) Las asignaciones no copian datos, ligan nombres a objetos. Siempre van al ámbito interno. Operadores máxima prioridad llamada a función f(argumentos) sección x[índice:índice] subscripción x[índice] referencia a un atributo x.atributo unitarios + - potencia ** aritméticos * / % + - desplazar bits » « a nivel bits #1713#> xor | or comparaciones < > == >= <= <> != Se pueden encadenar: x < y < z identidad is [not] membresía [not] in booleanos not x and or lambda expresión lambda
  • Control de flujo if expresión: Instrucción(es) [elif: Instrucción(es)] [else: Instrucción(es)] while expresión: Instrucción(es) [else: Instrucción(es)] for elemento in lista: Instrucción(es) Entrada y Salida  Consola print Renglón en blanco print x,y,z Separados por un espacio print alfa, Evita línea nueva al final print 'cadena-de-formato' % (expresiones) '%10s, %5d' como en printf() print 'cadena-de-formato' % diccionario '%(llave)formato' rawinput( [mensaje] ) Entrada de datos. Import readline opcional.
  • Columnas import string print string.ljust( expr, ancho), string.center( expr, ancho), string.rjust( expr, ancho) Archivos f=open( 'ruta-a-archivo' [, modo]) modo: 'r', 'w', 'a', 'rb', 'wb', 'ab' f.read( [bytes] ) bytes=todos f.readline( [bytes] ) 'n' incluído al final de la cadena. eof es cuando regresa cadena vacía. f.readlines( [bytesaprox] ) bytesaprox=todos f.write( expresión ) f.writelines( lista ) f.tell() f.seek( offset, respectoa) 0 principio, 1 posición actual, 2 fin del archivo. f.close() Predefinidos: sys.stdin sys.stdout sys.stderr Objetos persistentes import pickle pickle.dump( objeto, archivo) objeto = pickle.load( archivo)
  • Parámetros Posicionales nombre, ... Con valor por omisión nombre=valor_por_omisión, ... Opcionales *nombre Uso Nombre ( [argumentos] ) Argumentos Posicionales valor, ... Con nombre nombre=valor, ... Por tupla *tupla Por diccionario *diccionario Orden: de arriba a abajo. Los argumentos pasan por referencia al objeto. Funciones lambda lambda parámetros: expresión. Solamente una instrucción. Documentación Empieza con mayúscula, termina con punto, no incluye el nombre del objeto. Segunda línea vacía si tiene más líneas. Ámbitos y espacios de nombres Espacio de nombres: mapeo de nombres a objetos. Implementado con diccionarios. Alias: varios nombres pueden apuntar a un mismo objeto. Ámbito: región de texto de un programa de python donde un nombre es accesible directamente (con referencia sin calificar). Determinados estáticamente, usados dinámicamente.
  • Conclusión Python está en movimiento y en pleno desarrollo, pero ya es una realidad y una interesante opción para realizar todo tipo de programas que se ejecuten en cualquier máquina. El equipo de desarrollo está trabajando de manera cada vez más organizada y cuentan con el apoyo de una comunidad que está creciendo rápidamente.