0% encontró este documento útil (0 votos)
98 vistas13 páginas

Fundamentos de Python 2-1

Este documento trata sobre los fundamentos de Python. Explica conceptos como módulos, paquetes, importación de módulos, manejo de caracteres y cadenas en Python.

Cargado por

Karla Galan
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
98 vistas13 páginas

Fundamentos de Python 2-1

Este documento trata sobre los fundamentos de Python. Explica conceptos como módulos, paquetes, importación de módulos, manejo de caracteres y cadenas en Python.

Cargado por

Karla Galan
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 13

Güizado Espinola Sandra Paola.

221550244

Fundamentos de Python 2

➢ Modulo 1. Módulos, Paquetes y Pip.

➢ Módulos:
Los módulos o mod python sirven para organizar un código. Son ficheros externos en código de
Python que pueden importarse en tus propios ficheros. Un código que no sea capaz de
responder a las necesidades de los usuarios será olvidado rápidamente y reemplazado
instantáneamente por un código nuevo, mejor y más flexible.

➢ Manejo de los módulos de Python:

• El primero (probablemente el más común) ocurre cuando se desea utilizar un módulo ya


existente - escrito por otra persona o creado por el programador mismo en algún proyecto
complejo: en este caso, se considera al programador como el usuario del módulo.
• El segundo ocurre cuando se desea crear un nuevo módulo, ya sea para uso propio o para
facilitar la vida de otros programadores - aquí eres el proveedor del módulo.
Todos estos módulos, junto con las funciones integradas, forman la Biblioteca Estándar de Python
- un tipo especial de biblioteca donde los módulos desempeñan el papel de libros (incluso
podemos decir que las carpetas desempeñan el papel de estantes). Cada módulo consta de
entidades (estas entidades pueden ser funciones, variables, constantes, clases y objetos.)

➢ Importar módulo.
La importación de un módulo se realiza mediante una instrucción denominada “importar”.
Güizado Espinola Sandra Paola.
221550244

1. Si deseas importar un módulo como un todo, puedes hacerlo usando la sentencia


importar nombre_del_módulo. Puedes importar más de un módulo a la vez utilizando una
lista separada por comas.
2. Si un módulo se importa de la manera anterior y desea acceder a cualquiera de sus
entidades, debe anteponer el nombre de la entidad empleando la notación con punto.
3. Se te permite no solo importar un módulo como un todo, sino también importar solo
entidades individuales de él. En este caso, las entidades importadas no deben especificar
el prefijo cuando son empleadas.
4. La forma más general de la sentencia anterior te permite importar todas las entidades
ofrecidas por un modulo

Hay una condición: el módulo tiene que haber sido importado previamente como un todo (es
decir, usando el “módulo” de importación “instrucción” -desde el “módulo” no es suficiente). La
función devuelve una lista ordenada alfabéticamente que contiene todos los nombres de
entidades disponibles en el módulo identificado por un nombre pasado a la función como
argumento.

➢ ¿Existe aleatoriedad real en las computadoras?

Los datos producidos por computadoras deterministas no pueden ser aleatorios de ninguna
manera.
Un generador de números aleatorios toma un valor llamado semilla, lo trata como un valor de
entrada, calcula un número "aleatorio" basándose en él (el método depende del algoritmo
elegido) y produce un nuevo valor semilla.
La duración de un ciclo en el que todos los valores semilla son únicos puede ser muy larga, pero
no es infinita: tarde o temprano los valores semilla comenzarán a repetirse, y los valores
generadores también se repetirán. Esto es normal. Es una característica, no un error o un error.
El valor inicial, establecido durante el inicio del programa, determina el orden en el que
aparecerán los valores generados.
El factor aleatorio del proceso se puede aumentar configurando la semilla con un número tomado
del tiempo actual; esto puede garantizar que cada inicio del programa comience desde un valor
de semilla diferente (ergo, usará diferentes números aleatorios).
Güizado Espinola Sandra Paola.
221550244

➢ Funciones:

1. Una función llamada “directorio()” puede mostrarle una lista de las entidades contenidas
dentro de un módulo importado.
2. El “matemáticas” El módulo acopla más de 50 símbolos (funciones y constantes) que
realizan operaciones matemáticas (coseno(), poder(), factorial()) o proporcionando
valores importantes (como π y el símbolo de Euler e ).
3. El “módulo aleatorio” agrupa más de 60 entidades diseñadas para ayudarle a utilizar
números pseudoaleatorios.

➢ Paquetes:
En Python, un paquete es simplemente un directorio que contiene módulos. Cada paquete en
Python debe contener el archivo __init__.py así nos aseguramos de indicar al intérprete de
Python que ese directorio es un paquete. También podemos importar un Paquete así como lo
hacemos con los módulos.
1. Un módulo es un contenedor lleno de funciones - puedes empaquetar tantas funciones
como desees en un módulo y distribuirlo por todo el mundo.
2. un nombre claro e intuitivo al módulo que las contiene (por ejemplo, no le des el nombre
videojuegos a un módulo que contiene funciones destinadas a participar y formatear
discos duros).

➢ Instalador de paquetes Python:


PyPI es completamente gratuito y puedes simplemente elegir un código y usarlo; no encontrarás
ni cajero ni guardia de seguridad.
PyPI es una tienda muy específica, no sólo porque ofrece todos sus productos de forma gratuita.
También requiere una herramienta especial para utilizarlo.
Güizado Espinola Sandra Paola.
221550244

➢ Modulo 2: caracteres y cadenas frente a la computadora:

Las computadoras almacenan los caracteres como números. Cada carácter utilizado por una
computadora corresponde a un número único, y viceversa. Esta asignación debe incluir más
caracteres de los que podrías esperar. Muchos de ellos son invisibles para los humanos, pero
esenciales para las computadoras. Algunos de estos caracteres se llaman espacios en blanco,
mientras que otros se nombran caracteres de control, porque su propósito es controlar
dispositivos de entrada y salida.

• Las computadoras almacenan caracteres como números. Hay más de una forma posible de
codificar caracteres, pero sólo algunas de ellas ganaron popularidad mundial y se utilizan
comúnmente en TI: son ASCII (utilizado principalmente para codificar el alfabeto latino y
algunos de sus derivados) y UNICODE (capaz de codificar virtualmente todos los alfabetos
utilizados por los humanos).
• Un número correspondiente a un carácter particular se llama punto de código.
• UNICODE utiliza diferentes formas de codificación a la hora de almacenar los caracteres
mediante archivos o memoria del ordenador: dos de ellas son UCS-4 y UTF-8 (este último es
el más común ya que desperdicia menos espacio de memoria).

➢ Naturaleza de las cadenas.


Las cadenas en Python son una secuencia de caracteres, para poder crear una cadena se necesita
crear el texto entre comillas dobles o simples, se pueden utilizar ambas comillas. 'Python' sería lo
mismo que "Python". La función print() se utiliza para pintar el texto de la cadena.

1. Las cadenas de Python son secuencias inmutables y pueden indexarse, dividirse e iterarse
como cualquier otra secuencia, además de estar sujetas a la sen y no en operadores. Hay
dos tipos de cadenas en Python:

• cadenas de una sola línea, que no pueden cruzar los límites de las líneas; las
denotamos usando apóstrofes ('cadena') o comillas ("cadena")
Güizado Espinola Sandra Paola.
221550244

• cadenas de varias líneas, que ocupan más de una línea de código fuente, delimitadas
por trígrafos.

2. La longitud de una cuerda está determinada por lalen()función. El carácter de escape (\)
no se cuenta.
3. Las cadenas se pueden concatenar usando el+operador, y replicado utilizando
el*operador.
4. El par de funcioneschr()yorden()se puede utilizar para crear un carácter utilizando su
punto de código y para determinar un punto de código correspondiente a un carácter.
5. Algunas otras funciones que se pueden aplicar a cadenas son:

• lista()– crea una lista que consta de todos los caracteres de la cadena.
• máx()– encuentra el carácter con el punto de código máximo.
• mín()– encuentra el personaje con el punto de código mínimo.
6. El método nombrado índice() encuentra el índice de una subcadena determinada dentro
de la cadena.
7. Algunos de los métodos que ofrecen las cadenas son:

• capitalizar()– cambia todas las letras de la cadena a mayúsculas;


• centro()– centra la cadena dentro del campo de longitud conocida;
• contar()– cuenta las apariciones de un carácter determinado;
• unirse()– une todos los elementos de una tupla/lista en una cadena;
• más bajo()– convierte todas las letras de la cadena en letras minúsculas;
• tira()– elimina los caracteres blancos del principio de la cadena;
• reemplazar()– reemplaza una subcadena determinada por otra;
• encontrar()– busca una subcadena comenzando desde el final de la cadena;
• rstrip()– elimina los espacios en blanco finales del final de la cadena;
• dividir()– divide la cadena en una subcadena utilizando un delimitador
determinado;
• banda()– elimina los espacios en blanco iniciales y finales;
• caso de intercambio()– intercambia las mayúsculas y minúsculas de las letras (de
abajo a arriba y viceversa)
• título()– pone la primera letra de cada palabra en mayúscula;
• superior()– convierte todas las letras de la cadena en letras mayúsculas.

8. El contenido de la cadena se puede determinar utilizando los siguientes métodos (todos


devuelven valores booleanos):

• termina con()– ¿La cadena termina con una subcadena determinada?


• isalnum()– ¿La cadena consta únicamente de letras y dígitos?
• isalfa()– ¿La cadena se compone sólo de letras?
• es bajo()– ¿La cadena consta únicamente de letras minúsculas?
• isespacio()– ¿La cadena consta únicamente de espacios en blanco?
Güizado Espinola Sandra Paola.
221550244

• issuperior()– ¿La cadena consta únicamente de letras mayúsculas?


• comienza con()– ¿La cadena comienza con una subcadena determinada.
9. Las cadenas se pueden comparar con otras cadenas utilizando operadores de
comparación generales, pero compararlas con números no da un resultado razonable,
porque ninguna cadena puede ser igual a ningún número. Por ejemplo:

• cadena == númeroes siempreFALSO;


• cadena! = numeroes siempreVerdadero;
• cadena >= númerosiempre plantea una excepción .
• La clasificación de listas de cadenas se puede realizar mediante:
• una función llamadaordenado(), creando una lista nueva y ordenada;
• un método llamadoclasificar(), que ordena la lista in situ

10. Un número se puede convertir en una cadena usando elcadena()función.


11. Una cadena se puede convertir en un número (aunque no todas las cadenas) usando elEn
t()oflotar() función.
12. La conversión falla si una cadena no contiene una imagen numérica válida (en ese caso se
genera una excepción).
Güizado Espinola Sandra Paola.
221550244

➢ Modulo 3. Programación orientada a objetos.

➢ Conceptos básicos:

Casi todos los programas y técnicas que ha utilizado hasta ahora pertenecen al estilo de
programación procedimental. Es cierto que ha utilizado algunos objetos integrados, pero al
referirnos a ellos, sólo mencionamos el mínimo absoluto.
El enfoque de objetos es bastante joven (mucho más joven que el enfoque procedimental) y es
particularmente útil cuando se aplica a proyectos grandes y complejos llevados a cabo por
grandes equipos formados por muchos desarrolladores.
Además, puede crear muchas aplicaciones útiles, incluso si no sabe nada sobre clases y objetos,
pero debe tener en cuenta que algunos de los problemas (por ejemplo, el manejo de la interfaz
gráfica de usuario) pueden requerir un enfoque de objetos estricto.
Cada objeto tiene un conjunto de rasgos (se llaman propiedades o atributos; usaremos ambas
palabras como sinónimos) y es capaz de realizar un conjunto de actividades (que se llaman
métodos).

➢ Enfoque procedimental:

En el enfoque procedimental, es posible distinguir dos mundos diferentes y completamente


separados: el mundo de los datos y el mundo del código. El mundo de los datos está poblado de
Güizado Espinola Sandra Paola.
221550244

variables de diferentes tipos, mientras que el mundo del código está habitado por código
agrupado en módulos y funciones. Las funciones pueden utilizar datos, pero no al revés.

➢ Enfoque objetal:

El enfoque objetal sugiere una forma de pensar completamente diferente. Los datos y el código
están encerrados en un mismo mundo, divididos en clases.

Cada clase es como una receta que se puede utilizar cuando se desea crear un objeto útil (de aquí
proviene el nombre del enfoque). Puedes producir tantos objetos como necesites para resolver
tu problema.

➢ Objeto:

Un objeto es una encarnación de los requisitos, rasgos y cualidades asignados a una clase
específica. Esto puede parecer simple, pero tenga en cuenta las siguientes circunstancias
importantes. Las clases forman una jerarquía.

Esto puede significar que un objeto que pertenece a una clase específica pertenece a todas las
superclases al mismo tiempo. También puede significar que cualquier objeto que pertenezca a
una superclase puede no pertenecer a ninguna de sus subclases.

La convención de programación de objetos supone que cada objeto existente puede estar
equipado con tres grupos de atributos:

• un objeto tiene un nombre que lo identifica de forma única dentro de su espacio de


nombres de inicio (aunque también puede haber algunos objetos anónimos)
• un objeto tiene un conjunto de propiedades individuales que lo hacen original, único o
sobresaliente (aunque es posible que algunos objetos no tengan ninguna propiedad)
• un objeto tiene un conjunto de habilidades para realizar actividades específicas, capaces
de cambiar el objeto en sí o algunos de los otros objetos.

➢ Pilas:

• Una pila es una estructura desarrollada para almacenar, la pila es un objeto con dos
operaciones elementales, convencionalmente denominadas push (cuando se coloca un
nuevo elemento en la parte superior) y pop (cuando se quita un elemento existente de la
parte superior).tos de una forma muy específica.
• La pila es un objeto con dos operaciones elementales, convencionalmente
denominadas push (cuando se coloca un nuevo elemento en la parte superior)
y pop (cuando se quita un elemento existente de la parte superior).
Güizado Espinola Sandra Paola.
221550244

Imagina una pila de monedas. Representación del ejemplo:

o No puedes poner una moneda en ningún otro lugar


sino en la parte superior de la pila. Del mismo modo,
no puedes sacar una moneda de la pila desde ningún
lugar que no sea la parte superior de la pila.
o Si deseas obtener la moneda que se encuentra en la
parte inferior, debes eliminar todas las monedas de los
niveles superiores.
o El nombre alternativo para una pila (pero solo en la
terminología de TI) es UEPS (LIFO son sus siglas en
inglés). Es una abreviatura para una descripción muy
clara del comportamiento de la pila: Último en Entrar -
Primero en Salir (Last In - First Out).
o La moneda que quedó en último lugar en la pila saldrá
primero.. La moneda que llegó en último lugar a la pila
se irá primero.

➢ Enfoque procedimental de una pila:

Primero, debes decidir como almacenar los valores que llegarán a la pila. Sugerimos utilizar el
método más simple, y emplear una lista para esta tarea.

➢ Variables de instancia:

Diferentes objetos de la misma clase pueden poseer diferentes conjuntos de propiedades.

• Debe haber una manera de verificar con seguridad si un objeto específico posee la
propiedad que deseas utilizar (a menos que quieras generar una excepción,
siempre vale la pena considerarlo).
• Cada objeto lleva su propio conjunto de propiedades, no interfieren entre sí de
ninguna manera. Tales variables (propiedades) se llaman variables de instancia.
• La palabra instancia sugiere que están estrechamente conectadas a los objetos (que
son instancias de clase), no a las clases mismas.

➢ Variables de clase:

• Una variable de clase es una propiedad que existe en una sola copia y se almacena
fuera de cualquier objeto.
• No existe una variable de instancia si no hay ningún objeto de la clase; solo existe
una variable de clase en una copia, incluso si no hay objetos en la clase.
Güizado Espinola Sandra Paola.
221550244

➢ Módulo 4. Varios

➢ Generadores:
Un generador de Python es un fragmento de código especializado capaz de producir una serie de
valores y controlar el proceso de iteración. Esta es la razón por la cual los generadores a menudo
se llaman iteradores, y aunque hay quienes pueden encontrar una diferencia entre estos dos,
aquí los trataremos como uno mismo.

➢ Función range:
La función range() es un generador, la cual también es un iterador.
Una función devuelve un valor bien definido, el cual, puede ser el resultado de una evaluación
compleja, por ejemplo, de un polinomio, y se invoca una vez, solo una vez. Un generador devuelve
una serie de valores, y en general, se invoca (implícitamente) más de una vez.

➢ Interadores:
El protocolo iterador es una forma en que un objeto debe comportarse para ajustarse a las reglas
impuestas por el contexto de las sentencias for e in. Un objeto conforme a estas reglas se llama
iterador.
Un iterador debe proporcionar dos métodos:
o __iter__() el cual debe devolver el objeto en sí y que se invoca una vez (es necesario para
que Python inicie con éxito la iteración).
➢ __next__() el cual debe devolver el siguiente valor (primero, segundo, etc). de la serie
deseada: será invocado por las sentencias for/in para pasar a la siguiente iteración; si
no hay más valores a proporcionar, el método deberá generar la excepción
StopIteration.

➢ Sentencia yeild
El protocolo iterador no es difícil de entender y usar, pero también es indiscutible que el protocolo
es bastante inconveniente. La principal molestia que tiene es que necesita guardar el estado de
la iteración en las invocaciones subsecuentes de __iter__.
Güizado Espinola Sandra Paola.
221550244

➢ Archivos de Python:

➢ Acceso a archivos desde código en Python:


Es mucho más fácil imaginar que estos números se almacenan en el archivo que lee el programa.
El programa clasifica los números y no los envía a la pantalla, sino que crea un nuevo archivo y
guarda la secuencia ordenada de números allí.
Si queremos implementar una base de datos simple, la única forma de almacenar la información
entre ejecuciones del programa es guardarla en un archivo (o archivos si tu base de datos es más
compleja).

➢ Nombres de archivos en Python:


Los diferentes sistemas operativos pueden tratar a los archivos de diferentes maneras. Por
ejemplo, Windows usa una convención de nomenclatura diferente a la adoptada en los sistemas
Unix/Linux.
Si utilizamos la noción de un nombre de archivo canónico (un nombre que define de forma
exclusiva la ubicación del archivo, independientemente de su nivel en el árbol de directorios),
podemos darnos cuenta de que estos nombres se ven diferentes en Windows y en Unix/Linux:
Además, los nombres de archivo de sistemas Unix/Linux distinguen entre mayúsculas y
minúsculas. Los sistemas Windows almacenan mayúsculas y minúsculas en el nombre del archivo,
pero no distinguen entre ellas.
Cualquier programa escrito en Python (y no solo en Python, porque esa convención se aplica a
prácticamente todos los lenguajes de programación) no se comunica con los archivos
directamente, sino a través de algunas entidades abstractas que se nombran de manera diferente
en los distintos lenguajes o entornos, los términos más utilizados son handles o manejadores (un
tipo de puntero inteligente) o streams o flujos (una especie de canal).

➢ Flujos de archivos:
La apertura del stream no solo está asociada con el archivo, sino que también se debe declarar la
manera en que se procesará el stream. Esta declaración se llama open mode, si la apertura es
exitosa, el programa solo podrá realizar las operaciones que sean consistentes con el modo
abierto declarado.
Hay dos operaciones básicas a realizar con el stream:
o Lectura del stream: las porciones de los datos se recuperan del archivo y se colocan en un
área de memoria administrada por el programa (por ejemplo, una variable).
Güizado Espinola Sandra Paola.
221550244

o Escritura del stream: Las porciones de los datos de la memoria (por ejemplo, una variable)
se transfieren al archivo.

➢ Manejo de archivos:
Los archivos se pueden procesar de muchas maneras diferentes:
1. Dependen del contenido del archivo.
2. Dependen de las intenciones del programador.

➢ Procesamiento de archivos de texto:

• El procesamiento será muy simple: vas a copiar el contenido del archivo a la consola y
contarás todos los caracteres que el programa ha leído.
• La lectura del contenido de un archivo de texto se puede realizar utilizando diferentes
métodos; ninguno de ellos es mejor o peor que otro. Depende de ti cuál de ellos prefieres y
te gusta.
Si se aplica a un archivo de texto, la función es capaz de:
o Leer un número determinado de caracteres (incluso solo uno) del archivo y
devolverlos como una cadena.
o Leer todo el contenido del archivo y devolverlo como una cadena.
o Si no hay nada más que leer (el cabezal de lectura virtual llega al final del archivo), la
función devuelve una cadena vacía.

➢ Readline:
El método intenta leer una línea completa de texto del archivo, y la devuelve como una cadena
en caso de éxito. De lo contrario, devuelve una cadena vacía.

➢ Readlines:
Cuando el método readlines(), se invoca sin argumentos, intenta leer todo el contenido del
archivo y devuelve una lista de cadenas, un elemento por línea del archivo.

➢ Write:
El método se llama write() y espera solo un argumento: una cadena que se transferirá a un archivo
abierto (no lo olvides), el modo de apertura debe reflejar la forma en que se transfieren los datos.
o El método write() devuelve la cantidad de bytes escritos correctamente.
Güizado Espinola Sandra Paola.
221550244

o Si los valores difieren de la longitud de los argumentos del método, puede significar que
hay algunos errores de escritura.

➢ Bytearray:
Python tiene más de un contenedor, uno de ellos es una clase especializada llamada bytearray,
como su nombre indica, es un arreglo que contiene bytes (amorfos).
Los datos amorfos no pueden almacenarse utilizando ninguno de los medios presentados
anteriormente: no son cadenas ni listas.
o Bytearrays se asemejan a listas en muchos aspectos. Por ejemplo, son mutables, son
susceptibles a la función len(), y puedes acceder a cualquiera de sus elementos usando
indexación convencional.

También podría gustarte