Curso de Python de ApkZube

  1. Hola Mundo
  2. Variables
  3. Palabras Clave
  4. Identificadores
  5. Literales
  6. Operadores
  7. Comentarios
  8. La Declaración If
  9. La Declaración If-Else
  10. La Declaración Else-If
  11. La Declaración If Anidada
  12. El Ciclo For
  13. El Ciclo While
  14. La Declaración Break
  15. La Declaración Continue
  16. La Declaración Pass
  17. Cadenas en Python
  18. Métodos y funciones de las cadenas
  19. Listas de Python
  20. Tupla de Python
  21. Diccionarios de Python
  22. Funciones de Python
  23. Entrada y salida de Python
  24. Módulos de Python
  25. Conceptos de OOP en Python
  26. Objetos de Python
  27. Constructores de Python
  28. Herencia de Python
  29. Herencia Multinivel de Python
  30. Herencia múltiple de Python
  31. Polimorfismo de Python
  32. Manejo de Excepciones

¡Hola, mundo! en Python

Python es fácil de aprender y codificar, y se puede ejecutar con el intérprete de Python. También podemos usar el shell interactivo de Python para probar el código de Python de inmediato. Un ejemplo simple de hola mundo se da a continuación. Escriba el código a continuación en un archivo y guárdelo con la extensión.py. El archivo fuente de Python tiene extensión .py.

Escribiendo el Programa «¡Hola, mundo!»

Para escribir el programa «¡Hola, mundo!», abramos un editor de texto de línea de comandos como nano y creemos un nuevo archivo: hello.py

Una vez que el archivo de texto se abra en la ventana del terminal, escribiremos nuestro programa:

print("¡Hola , mundo!")

Analicemos los diferentes componentes del código.

  1. print() es una función que le dice a la computadora que realice una acción. Sabemos que es una función porque usa paréntesis. print() le dice a Python que muestre o muestre lo que pongamos entre paréntesis. Por defecto, esto saldrá a la ventana de terminal actual.
  2. Algunas funciones, como la función print() , son funciones integradas incluidas en Python por defecto. Estas funciones integradas siempre están disponibles para que las usemos en los programas que creamos. También podemos definir nuestras propias funciones que construimos nosotros mismos a través de otros elementos.
  3. Dentro de los paréntesis de la función print() hay una secuencia de caracteres: ¡Hola , mundo! – que está entre comillas. Cualquier carácter que esté dentro de las comillas se llama cadena.
  4. Una vez que hayamos terminado de escribir nuestro programa, guarde el archivo y podremos salir del bloc de notas.

Una vez que salga de notepad, volverá a su shell o cmd. 

Ejecutando el Programa «¡Hola , mundo!»

El programa hello.py que acaba de crear hará que su terminal produzca el siguiente resultado:

¡Hola, Mundo!

¡Felicidades! Has escrito el programa «¡Hola, mundo!» en Python 3.

Desde que se ejecutó el programa, ahora puede confirmar que Python 3 está instalado correctamente y que el programa es sintácticamente correcto.

Variables de Python

Variable es un nombre que se utiliza para referirse a la ubicación de la memoria. Variable también conocida como identificador y utilizada para mantener el valor. En Python, no necesitamos especificar el tipo de variable porque Python es un lenguaje de inferir tipos y lo suficientemente inteligente como para obtener el tipo de variable.

Los nombres de las variables pueden ser un grupo de letras dígitos, pero deben comenzar con una letra o un guión bajo. Se recomienda usar letras minúsculas para el nombre de la variable. Rahul y rahul son dos variables diferentes.

Asignación de Variables

Piense en una variable como un nombre adjunto a un objeto en particular. En Python, las variables no necesitan ser declaradas o definidas de antemano, como es el caso en muchos otros lenguajes de programación. Para crear una variable, simplemente asigne un valor y luego comience a usarla. La asignación se realiza con un solo signo igual (=):

>>>n=300

Esto se lee o interpreta como “a n se le asigna el valor 300”. Una vez hecho esto, n puede usarse en una declaración o expresión, y su valor será sustituido:

>>>print(n)
300

Del mismo modo que un valor literal se puede mostrar directamente desde el indicador del intérprete en una sesión REPL sin la necesidad de print(), también puede hacerlo una variable:

>>>n
300

Más tarde, si cambia el valor de n y lo usa nuevamente, el nuevo valor será sustituido en su lugar

>>>n=1000
>>>print(n)
1000 
>>>n
1000

Python también permite la asignación encadenada , lo que permite asignar el mismo valor a varias variables simultáneamente:

>>>a=b=c=300
>>>print(a,b,c)
300 300 300

La asignación encadenada anterior asigna 300 a las variables a, b y c simultáneamente.

Tipos de variables en Python

En muchos lenguajes de programación, las variables se escriben estáticamente. Eso significa que inicialmente se declara que una variable tiene un tipo de datos específico, y cualquier valor que se le asigne durante su vida útil siempre debe tener ese tipo.

Las variables en Python no están sujetas a esta restricción. En Python, a una variable se le puede asignar un valor de un tipo y luego reasignar un valor de un tipo diferente:

>>>var=23.5
>>>print(var)
23.5 
>>>var="Now I'm a string"
>>>print(var)
Now I'm a string

Referencias de objeto

¿Qué sucede realmente cuando haces una asignación de variable? Esta es una pregunta importante en Python, porque la respuesta difiere un poco de lo que encontraría en muchos otros lenguajes de programación.

Python es un lenguaje altamente orientado a objetos. De hecho, prácticamente cada elemento de datos en un programa de Python es un objeto de un tipo o clase específica. (Este punto se reiterará muchas veces en el transcurso de estos tutoriales).

Considera este código:

>>>print(300)    
300

Cuando se le presenta la declaración print(300), el intérprete hace lo siguiente:

  • Crea un objeto entero
  • Le da el valor 300
  • Lo muestra en la consola.

Puede ver que se crea un objeto entero utilizando la función incorporada type():

>>>type(300)
< class 'int'>

Una variable de Python es un nombre simbólico, que es una referencia o puntero a un objeto. Una vez que se asigna un objeto a una variable, puede referirse al objeto con ese nombre. Pero los datos en sí todavía están contenidos dentro del objeto.

Por ejemplo:

>>>n=300

Esta asignación crea un objeto entero con el valor 300 y asigna la variable n para apuntar a ese objeto.

El siguiente código verifica que n apunta a un objeto entero:

>>>print(n)
300
>>>type(n)
< class 'int'>

Ahora considere la siguiente declaración:

m=n

¿Qué sucede cuando se ejecuta? Python no crea otro objeto. Simplemente crea un nuevo nombre simbólico o referencia, m, que apunta al mismo objeto al que apunta n.

Luego, suponga que hace esto:

>>>m=400

Ahora Python crea un nuevo objeto entero con el valor 400, y m se convierte en una referencia a él.

Por último, supongamos que esta declaración se ejecuta a continuación:

>>>n="foo"

Ahora Python crea un objeto de cadena con el valor “foo” y n hace referencia a él.

Ya no hay ninguna referencia al objeto entero 300. Éste es huérfano, y no hay manera de acceder a él.

Cuando el número de referencias a un objeto cae a cero, el mismo ya no es accesible. En ese punto, su vida ha terminado. Python eventualmente notará que es inaccesible recuperará la memoria asignada para que pueda usarse para otra cosa. En la jerga informática, este proceso se conoce como recolección de basura.

Nombres de Variables

Los ejemplos que ha visto hasta ahora han usado nombres de variables breves y concisos como m y n. Pero los nombres de las variables pueden ser más detallados. De hecho, generalmente es beneficioso si lo son porque ésto hace que el propósito de la variable sea más evidente a primera vista.

Oficialmente, los nombres de variables en Python pueden tener cualquier longitud y pueden consistir en letras mayúsculas y minúsculas (AZ, az)dígitos (0-9) y el carácter de subrayado (_). Una restricción adicional es que, aunque un nombre de variable puede contener dígitos, el primer carácter de un nombre de variable no puede ser un dígito.

  • Nota: Una de las adiciones a Python 3 fue el soporte completo de Unicode, que también permite caracteres Unicode en un nombre de variable. Aprenderá sobre Unicode con mayor profundidad en un tutorial futuro.

Por ejemplo, todos los siguientes son nombres de variables válidos:

>>>name="Bob"
>>>Age=54
>>>has_W2=True
>>>print(name,Age,has_W2)
Bob 54 True

Pero este no lo es, porque un nombre de variable no puede comenzar con un dígito:

>>>1099_filed=False
SyntaxError: invalid token

Tenga en cuenta que el caso es significativo. Las letras minúsculas y mayúsculas no son lo mismo. El uso del carácter de subrayado también es significativo. Cada uno de los siguientes ejemplos define una variable diferente:

>>>age=1
>>>Age=2
>>>aGe=3
>>>AGE=4
>>>a_g_e=5
>>>_age=6
>>>age_=7
>>>_AGE_=8
>>>print(age,Age,aGe,AGE,a_g_e,_age,age_,_AGE_)
1 2 3 4 5 6 7 8

No hay nada que le impida crear dos variables diferentes en el mismo programa, llamadas age y Age, o, en realidad, agE. Pero probablemente sea desaconsejado. Sin duda, es probable que confunda a cualquiera que intente leer su código, e incluso a usted mismo, después de haber estado alejado de él por un tiempo.

Palabras clave de Python

Hay una restricción más en los nombres de los identificadores. El lenguaje Python reserva un pequeño conjunto de palabras clave que designan una funcionalidad de lenguaje especial. Ningún objeto puede tener el mismo nombre que una palabra reservada.

En Python 3.6, hay 33 palabras clave reservadas:

Falseclassfinallyisreturn
Nonecontinueforlambdatry
Truedeffromnonlocalwhile
anddelglobalnotwith
aselififoryield
assertelseimportpassbreak
exceptinraise  
Palabras clave de Python

Puede ver esta lista en cualquier momento escribiendo help(«keywords») en el intérprete de Python. Las palabras reservadas distinguen entre mayúsculas y minúsculas y deben usarse exactamente como se muestra. Todas son completamente minúsculas, excepto False, None y True.

Intentar crear una variable con el mismo nombre que cualquier palabra reservada produce un error:

>>> for = 3
SyntaxError: invalid syntax

Identificadores de Python

Un identificador es un nombre dado a entidades como clases, funciones, variables, etc. Ayuda a diferenciar una entidad de otra.

Reglas para escribir identificadores

  • Los identificadores pueden ser una combinación de letras en minúsculas (de la a a la z) o mayúsculas (de la A a la Z) o dígitos (0 a 9) o un guión bajo _. Nombres como myClass, var_1 y print_this_to_screen, todos son ejemplos válidos.
  • Un identificador no puede comenzar con un dígito. 1variable no es válido, pero variable1 está perfectamente bien.
  • Las palabras clave no pueden usarse como identificadores.
>>> global = 1
&nbsp; File "< interactive input >", line 1
&nbsp;&nbsp;&nbsp; global = 1
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ^
SyntaxError: invalid syntax
  • No podemos usar símbolos especiales, como !, @, #, $, %, etc.en nuestro identificador.
>>> a@ = 0
&nbsp; File "< interactive input >", line 1
&nbsp;&nbsp;&nbsp; a@ = 0
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ^
SyntaxError: invalid syntax
  • El identificador puede ser de cualquier longitud.

Literales de Python

Un literal es un dato sin procesar dado en una variable o constante. En Python, hay varios tipos de literales que son los siguientes:

Literales Numéricos

Los literales numéricos son inmutables (inmutables). Los literales numéricos pueden pertenecer a 3 tipos numéricos diferentes: Integer, Float y Complex.

Ejemplo: ¿Cómo usar literales numéricos en Python?

a = 0b1010  #Literal binario
b = 100  #Literal decimal
c = 0o310  #Literal octal
d = 0x12c  #Literal hexadecimal
#Literales de punto flotante
float_1 = 10.5
float_2 = 1.5e2
#Literal complejo
x = 3.14j
print(a, b, c, d)
print(float_1, float_2)
print(x, x.imag, x.real)

Cuando ejecutas el programa, la salida será:

10 100 200 300
10.5 150.0
3.14j 3.14 0.0

En el programa anterior:

  • Asignamos literales enteros en diferentes variables. Aquí, a es un literal binario, b es un literal decimal, c es un literal octal y d es un literal hexadecimal.
  • Cuando imprimimos las variables, todos los literales se convierten en valores decimales.
  • 10.5 y 1.5e2 son literales de punto flotante. 1.5e2 se expresa con exponencial y es equivalente a 1.5*102.
  • Asignamos un literal complejo, es decir, 3.14j en la variable x. Luego usamos el literal imaginario (x.imag) y el literal real (x.real) para crear una parte imaginaria y otra real de un número complejo.

Literales de cadena

Un literal de cadena es una secuencia de caracteres rodeados de comillas. Podemos usar comillas simples, dobles o triples para una cadena. Y, un carácter literal es un carácter simple rodeado de comillas simples o dobles.

Ejemplo: ¿Cómo usar literales de cadena en Python?

strings = "This is Python"
char = "C"
multiline_str = """This is a multiline string with more than one line code."""
unicode = u"\u00dcnic\u00f6de"
raw_str = r"raw \n string"
print(strings)
print(char)
print(multiline_str)
print(unicode)
print(raw_str)

Cuando ejecutas el programa, la salida será:

This is Python
C
This is a multiline string with more than one line code.
Ünicöde
raw \n string

En el programa anterior, Esto es Python es un literal de cadena y C es un literal de caracteres. El valor con comillas triples «»» asignadas en multiline_str es un literal de cadena de varias líneas. La u»\u00dcnic\u00f6de» es un literal unicode que admite caracteres distintos al inglés y r»raw \n string» es una cadena sin procesar literal.

Literales booleanos

Un literal booleano puede tener cualquiera de los dos valores: verdadero o falso.

Ejemplo: ¿Cómo usar literales booleanos en Python?

x =(1 == True)  # Asignamos el resultado de la igualdad, V o F, a x.
y =(1 == False)
a = True + 4
b = False + 10
print("x is", x)
print("y is", y)
print("a:", a)
print("b:", b)

Cuando ejecutas el programa, la salida será:

x is True
y is False
a: 5
b: 10

En el programa anterior, usamos los literales booleanos True y False. En Python, True representa el valor como 1 y False como 0. El valor de x es verdadero porque 1 es igual a verdadero. Y, el valor de y es False porque 1 no es igual a False.

Del mismo modo, podemos usar el Verdadero y el Falso en expresiones numéricas como el valor. El valor de a es 5 porque agregamos True que tiene un valor de 1 con 4. Del mismo modo, b es 10 porque agregamos Falso que tiene el valor 0 con 10.

Literales especiales

Python contiene un literal especial, es decir, None(ninguno). Lo usamos para especificar a ese campo que no se crea.

Ejemplo: ¿Cómo usar literales especiales en Python?

drink = "Available"
food = None
def menu(x):
    if x == drink:
        print(drink)
    else:
        print(food)
menu(drink)
menu(food)

Cuando ejecutas el programa, la salida será:

Available
None

En el programa anterior, definimos una función de menú. Dentro del menú, cuando configuramos el parámetro como bebida, muestra Disponible. Y, cuando el parámetro es comida, muestra Ninguno.

Colecciones literales

Hay cuatro colecciones literales diferentes: Listas literales, Tuplas literales, Diccionarios literales y Set literals [conjuntos literales].

Ejemplo: ¿Cómo usar colecciones literales en Python?

fruits = ["apple", "mango", "orange"]  #lista
numbers =(1, 2, 3)  #tupla
alphabets = {'a':'apple', 'b':'ball', 'c':'cat'}  #diccionario
vowels = {'a', 'e', 'i' , 'o', 'u'}  #conjunto
print(fruits)
print(numbers)
print(alphabets)
print(vowels)

Cuando ejecutas el programa, la salida será

['apple', 'mango', 'orange']
(1, 2, 3)
{'a': 'apple', 'b': 'ball', 'c': 'cat'}
{'e', 'a', 'o', 'i', 'u'}

En el programa anterior, creamos una lista de frutas, una tupla de números, un diccionario con valores y claves designadas para cada valor, y un conjunto de vocales.

Aprenderemos más sobre colecciones literales en Tutorial avanzado.

Operadores de Python

¿Qué son los operadores en python?

En Python, los operadores son símbolos especiales que realizan cálculos aritméticos o lógicos. El valor en el que opera el operador se llama operando.

Por ejemplo:

>>>2+3
5

Aquí, + es el operador que realiza la suma. 2 y 3 son los operandos y 5 es la salida de la operación.

Operadores aritméticos

Los operadores aritméticos se utilizan para realizar operaciones matemáticas como suma, resta, multiplicación, etc.

Operadores aritméticos en Python

Op.SentidoExp.
+Agregue dos operandos o unario más.x+y +2
Reste el operando derecho del izquierdo o el unario menosx-y -2
*Multiplica dos operandosx*y
/Divide el operando izquierdo por el derecho(siempre resulta en flotante)x/y
%Módulo: resto de la división del operando izquierdo por el derechox%y (resto de x/y)
//División de piso: división que resulta en un número entero ajustado a la izquierda de la recta numéricax//y
**Exponente: exponente izquierdo elevado a la potencia de la derechax**y (x a la potencia y)

Ejemplo: operadores aritméticos en Python

x = 15
y = 4
print('x + y =',x+y)  #Salida: x + y = 19
print('x - y =',x-y)  #Salida: x - y = 11   print('x * y =',x*y)  #Salida: x * y = 60
print('x / y =',x/y)  #Salida: x / y = 3.75
print('x // y =',x//y)  #Salida: x // y = 3

Cuando ejecutas el programa, la salida será:

x + y = 19
x - y = 11
x * y = 60
x / y = 3.75
x // y = 3
x ** y = 50625

Operadores de comparación

Los operadores de comparación se utilizan para comparar valores. Devuelven Verdadero o Falso según la condición.

Operadores de comparación en Python

Op.SentidoExp.
Mayor que: verdadero si el operando izquierdo es mayor que el derechox> y
Menor que: verdadero si el operando izquierdo es menor que el derechox <y
==Igual a: verdadero si ambos operandos son igualesx == y
! =No es igual a: verdadero si los operandos no son igualesx! = y
> =Mayor o igual que: verdadero si el operando izquierdo es mayor o igual que el derechox> = y
<=Menor o igual que: verdadero si el operando izquierdo es menor o igual que el derecho  x <= y

Ejemplo: operadores de comparación en Python

x = 10
y = 12
print('x > y is',x>y)&nbsp; #Salida: x > y is False
print('x < y is',x<y)&nbsp; #Salida: x < y is True
print('x >= y is',x>=y)&nbsp; #Salida: x >= y is False
print('x <= y is',x<=y)&nbsp; #Salida: x <= y is True

Operadores lógicos

Los operadores lógicos son los operadores and, or y not.

Operadores lógicos en Python

Op.SentidoExp.
andEs cierto si ambos operandos son verdaderosX and Y
orVerdadero si cualquiera de los operandos es verdaderox or y
notVerdadero si el operando es falso (complementa el operando)not x

Ejemplo: operadores lógicos en Python

x = True
y = False
print('x and y is',x and y)  #Salida: x and y is False
print('x or y is',x or y)  #Salida: x or y is True
print('not x is',not x)  #Salida: not x is False

Operadores bit a bit

Los operadores bit a bit actúan sobre los operandos como si fueran una cadena de dígitos binarios. Funciona poco a poco, de ahí el nombre.

Por ejemplo, 2 es 10 en binario y 7 es 111.

En la tabla a continuación: Sea x = 10 (0000 1010 en binario) y y = 4 (0000 0100 en binario)

Operadores bit a bit en Python

Op.       SentidoExp.
YBitwise Yx & y = 0(0000 0000)
|Bitwise Ox | y = 14(0000 1110)
~NO bit a bit~ x = -11(1111 0101)
^Bitwise XORx ^ y = 14(0000 1110)
>> Desplazamiento a la derecha bit a bitx >> 2 = 2(0000 0010)
<< Desplazamiento a la izquierda bit a bitx << 2 = 40(0010 1000)

Operadores de Asignación

Los operadores de asignación se utilizan en Python para asignar valores a las variables.

a = 5 es un operador de asignación simple que asigna el valor 5 a la derecha a la variable a a la izquierda.

Hay varios operadores compuestos en Python como un + = 5 que se agrega a la variable y luego asigna la misma. Es equivalente a a = a + 5.

Operadores de asignación en Python

OperadorEjemploEquivalente a
=x=5x=5
+=x+=5x=x+5
-=x-=5x=x-5
*=x*=5x=x*5
/=x/=5x=x/5
%=x%=5x=x%5
//=x//=5x=x//5
**=x**=5x=x**5
&=x&=5x=x&5
|=x|=5x=x|5
^=x^=5x=x^5
>>=x>>=5x=x>>5
<<=x<<5x=x<<5

Operadores de identidad

is e is not son los operadores de identidad en Python. Se utilizan para verificar si dos valores (o variables) se encuentran en la misma parte de la memoria. Que dos variables sean iguales no implican que sean idénticas.

Operadores de identidad en Python

Op.SentidoExp.
isVerdadero si los operandos son idénticos. (se refieren al mismo objeto)x is True
is notVerdadero si los operandos no son idénticos. (no se refieren al mismo objeto)x is not True

Ejemplo: operadores de identidad en Python

x1 = 5
y1 = 5
x2 = 'Hello'
y2 = 'Hello'
x3 = [1,2,3]
y3 = [1,2,3]
print(x1 is not y1)  #Salida: False
print(x2 is y2)  #Salida: True
print(x3 is y3)  #Salida: False

Aquí, vemos que x1 y y1 son enteros del mismo valor, por lo que son iguales e idénticos. Igual es el caso con x2 y y2 (cadenas).

Pero x3 y y3 son listas. Son iguales pero no idénticos. Esto se debe a que el intérprete los ubica por separado en la memoria, aunque son iguales.

Operadores de membresía

in y not in (dentro y no dentro) son los operadores de membresía de Python. Se usan para probar si un valor o variable se encuentra en una secuencia (cadena, lista, tupla, conjunto o diccionario).

En un diccionario solo podemos probar la presencia de una clave, no la de un valor.

Operadores de membresía en Python     

Op.SentidoExp.
inVerdadero si el valor/variable se encuentra en la secuencia5 in x
not inVerdadero si el valor/variable no se encuentra en la secuencia5 no en x

Ejemplo: operadores de membresía en Python

x = 'Hello world'
y = {1:'a',2:'b'}
print('H' in x)  #Salida: True
print('hello' not in x)  #Salida: True
print(1 in y)  #Salida: True
print('a' in y)  #Salida: False

Aquí, ‘H’ está en x pero ‘hola’ no está presente en x (recuerde que Python distingue entre mayúsculas y minúsculas). De manera similar, 1 es clave y ‘a’ es el valor en el diccionario y. Por lo tanto, ‘a’ in y devuelve False.

Comentarios de Python

Los comentarios en Python comienzan con una marca hash (#) y un carácter de espacio en blanco y continúan hasta el final de la línea.

En general, los comentarios se verán así:

#Ésto es un comentario

Debido a que los comentarios no se ejecutan, cuando ejecuta un programa no verá ninguna indicación del comentario allí. Los comentarios están en el código fuente para que los seres humanos los lean, pero no para su ejecución por los ordenadores.

1) Comentario con una sola línea:

En el caso de que el usuario quiera especificar un comentario de una sola línea, el comentario debe comenzar con #.

# Ésto es un comentario de una sola línea.

2) Comentario con múltiples líneas:

El comentario con múltiples líneas se debe hacer dentro de comillas triples.

#Comentario de una sola línea
print("Hello Python")
'''Éste es un
comentario de múltiples líneas'''

3) comentarios en línea

Si un comentario se coloca en la misma línea que una declaración, se llama un comentario en línea. De manera similar al comentario de bloque, un comentario en línea comienza con un solo signo hash (#) y seguido de un espacio y un comentario.

Se recomienda que un comentario en línea se separe de la declaración por al menos dos espacios. El siguiente ejemplo muestra un comentario en línea

n+=1  #incrementa n en 1

 La declaración if de Python

La declaración if de Python es una declaración que se utiliza para probar la condición especificada. Podemos usar la instrucción if para realizar operaciones condicionales en nuestra aplicación de Python. La instrucción if se ejecuta sólo cuando la condición especificada es verdadera. Podemos pasar cualquier expresión válida al paréntesis de if.

Hay varios tipos de sentencias if en Python.

  1. La declaración if
  2. La declaración if-else
  3. La declaración else-if
  4. La declaración if anidada

La sintaxis de la declaración if

if evaluará si una declaración es verdadera o falsa, y ejecutará el código sólo en el caso de que la declaración sea verdadera.

if(condition):
   statements

Ejemplo de sentencia if:

grade = 70
if grade >= 65:
&nbsp;&nbsp;&nbsp; print("Passing grade")

En este código, tenemos la variable grade (calificación) y le estamos dando el valor entero de 70. Luego, estamos usando la instrucción if para evaluar si la variable grade es mayor o igual que 65. Si cumple esta condición, le estamos diciendo al programa que imprima la cadena Passing grade.

Salida del ejemplo anterior:

Passing grade

Nuevamente, si cambiamos la calificación a 50 o a un número menor que 65, entonces no recibiremos salida.

Declaración if else de Python

Es probable que queramos que el programa haga algo incluso cuando una declaración if se evalúe como falsa. En nuestro ejemplo de la calificación (grade), del tutorial anterior, vamos a querer saber si la calificación es de aprobación (passing) o no.

Sintaxis de la declaración  If else de Python:

if condition:
   statement
else:
   statement

Para hacer ésto, agregaremos una instrucción else a la condición de la calificación (grade) anterior, que se construye así:

grade = 60
if grade >= 65:
&nbsp;&nbsp;&nbsp; print("Passing grade")
else:
&nbsp;&nbsp;&nbsp; print("Failing grade")

Dado que la variable grade anterior tiene el valor de 60, la instrucción if se evalúa como falsa, por lo que el programa no imprimirá Passing grade. La declaración else, que sigue, le dice al programa que haga algo de todos modos.

Cuando guardemos y ejecutemos el programa, recibiremos el siguiente resultado:

Failing grade

Si luego reescribimos el programa para darle a la calificación (grade) un valor de 65 o más, entonces, en su lugar, recibiremos calificación de aprobación (passing grade).

Declaración else if de Python

Hasta ahora, hemos presentado una opción booleana para declaraciones condicionales, con cada declaración if evaluando a verdadero o falso. En muchos casos, queremos un programa que evalúe más de dos resultados posibles. Para esto, usaremos una instrucción else if, que en Python se escribe como elif. La declaración elif o else if se parece a la declaración if y evaluará otra condición.

Sintaxis de la declaración else if de Python:

If condition:
    statements
elif condition:
    statements
else:
    statements

Otro ejemplo de la declaración else if de Python:

if grade >= 90:
&nbsp;&nbsp;&nbsp; print("A grade")
elif grade >=80:
&nbsp;&nbsp;&nbsp; print("B grade")
elif grade >=70:
&nbsp;&nbsp;&nbsp; print("C grade")
elif grade >= 65:
&nbsp;&nbsp;&nbsp; print("D grade")
else:
&nbsp;&nbsp;&nbsp; print("Failing grade")

Dado que las declaraciones elif se evaluarán en orden, podemos mantener nuestras declaraciones bastante básicas. Este programa está completando los siguientes pasos:

  1. Si la calificación es mayor o igual a 90, el programa imprimirá una calificación A, si la calificación es menor a 90, el programa continuará con la siguiente declaración…
  2. Si la calificación es mayor o igual a 80, el programa imprimirá la calificación B, si la calificación es 79 o menos, el programa continuará con la siguiente declaración…
  3. Si la calificación es mayor o igual a 70, el programa imprimirá la calificación C, si la calificación es de 69 o menos, el programa continuará con la siguiente declaración…
  4. Si la calificación es mayor o igual a 65, el programa imprimirá la calificación D, si la calificación es 64 o menos, el programa continuará con la siguiente declaración…
  5. El programa imprimirá Calificación reprobatoria (Failing grade) porque no se cumplieron todas las condiciones anteriores.                       

Declaración If anidada de Python

Podemos usar sentencias if anidadas para situaciones en las que queremos verificar una condición secundaria si la primera condición se ejecuta como verdadera. Para esto, podemos tener una declaración if-else dentro de otra declaración if-else. Veamos la sintaxis de una declaración if anidada:

if expression1:
   statement(s)
   if expression2:
      statement(s)
   elif expression3:
      statement(s)
   elif expression4:
      statement(s)
   else:
      statement(s)
else:
   statement(s)

Ejecutemos el siguiente ejemplo:

a=10
if a>=20:
&nbsp;&nbsp;&nbsp; print("Condition is True")
else:
&nbsp;&nbsp;&nbsp; if a>=15:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print("Checking second value")
&nbsp;&nbsp;&nbsp; else:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; print("All Conditions are false")

Salida del ejemplo anterior:

All Conditions are false.

 Ciclo For de Python

El ciclo For de Python se usa para iterar los elementos de una colección en el orden en que aparecen. Esta colección puede ser una secuencia (lista o cadena).

Sintaxis del ciclo For de Python:

for [variable] in [sequence]:
  1. En primer lugar, el primer valor se asignará en la variable.
  2. En segundo lugar, todas las declaraciones en el cuerpo del bucle se ejecutan con el mismo valor.
  3. En tercer lugar, una vez que se completa el segundo paso, se le asigna a la variable, el siguiente valor en la secuencia y se repite el segundo paso.
  4. Finalmente, se continúa hasta que todos los valores de la secuencia se hayan asignado a la variable y se hayan procesado.

Ejemplo simple de ciclo For de Python:

num=2
for a in range(1,6):
    print(num * a)

Salida del ejemplo anterior:

2
4
6
8
10

Ejemplo de ciclo For de Python para encontrar la suma de 10 números:

sum=0
for n in range(1,11):
    sum+=n
print(sum)

Salida del ejemplo anterior:

55

Ciclos For anidados en Python

Ejemplo de bucle for anidado:

for i in range(1,6):
    for j in range(1,i+1):
        print(i)
    print()

Salida del ejemplo anterior:

1
2 2
3 3 3
4 4 4 4
5 5 5 5 5

Para cada valor de bucle externo, se ejecuta todo el bucle interno.

Para cada valor del bucle interno, el cuerpo se ejecuta cada vez.

Veamos un ejemplo más del programa de patrones:

for i in range(1,6):
    for j in range(5,i-1,-1):
       print("*")
    print()

Salida del ejemplo anterior:

* * * * *
* * * *
* * *
* *
*

Ciclo While de Python

En Python, el bucle while se usa para ejecutar varias declaraciones o cuerpo mientras la condición especificada sea verdadera. Una vez que la condición es falsa, el control saldrá del bucle.

Los bucles while se construyen así:

while [a condition is True]:
    [do something]

Aquí, el cuerpo del bucle se ejecutará mientras la expresión pasada sea verdadera. El cuerpo puede ser una declaración única o pueden ser múltiples declaraciones.

Ejemplo de Bucle While de Python:

a=10
while a>0:
&nbsp;&nbsp;&nbsp; print("Value of a is",a)
&nbsp;&nbsp;&nbsp; a=a-2
print("Loop is Completed")

Salida del ejemplo anterior:

Value of a is 10
Value of a is 8
Value of a is 6
Value of a is 4
Value of a is 2
Loop is Completed

Explicación:

  1. En primer lugar, se inicializa el valor en la variable.
  2. En segundo lugar, se evalúa la condición/expresión del ciclo while. En consecuencia, si la condición es verdadera, el control entra en el cuerpo y ejecuta todas las declaraciones. Si la condición/expresión pasada resultado falsa, entonces el control sale del cuerpo y pasa de inmediato a la siguiente instrucción posterior al cuerpo del ciclo while.
  3. En tercer lugar, en caso de que la condición fuera verdadera, después de haber completado todas las declaraciones, la variable se incrementa o disminuye. Después de haber cambiado el valor de la variable, es seguido el segundo paso. Este proceso continúa hasta que la expresión/condición se vuelve falsa.
  4. Finalmente, es ejecutado el resto del código posterior al cuerpo.

Bucle while de Python, Ejemplo 2:

n=153
sum=0
while n>0:
&nbsp;&nbsp;&nbsp; r=n%10
&nbsp;&nbsp;&nbsp; sum+=r
&nbsp;&nbsp;&nbsp; n=n/10
print(sum)

salida del ejemplo anterior:

9

Un bucle infinito ocurre cuando un programa sigue ejecutándose dentro de un bucle, sin abandonarlo nunca. Para salir de bucles infinitos en la línea de comandos, presione CTRL + C.

Este tutorial explica cómo funcionan los bucles while en Python y cómo construirlos. Los bucles while continúan recorriendo un bloque de código siempre que la condición establecida en la instrucción while sea True.

Declaración break de Python

En Python, la instrucción break le brinda la oportunidad de salir de un ciclo cuando se activa una condición externa. Usted pondrá la declaración break (interrupción) dentro del bloque de código, debajo de su declaración de bucle, generalmente después de una declaración if condicional.

Diagrama de flujo de la declaración de ruptura:

Veamos un ejemplo que usa la instrucción break en un bucle for:

number = 0
for number in range(10):
   number = number + 1
   if number == 5:
      break # break here
   print('Number is ' + str(number))
print('Out of loop')

Explicación:

  1. En este pequeño programa, la variable se inicializa en el número 0. Luego, una instrucción for construye el ciclo siempre que el número en la variable sea menor que 10.
  2. Dentro del ciclo for, el número aumenta incrementalmente en 1 con cada pasada debido a la sentencia número = número + 1.
  3. Luego, hay una declaración if que presenta la condición de que si el número de la variable es equivalente al número entero 5, entonces el ciclo se romperá.
  4. Dentro del ciclo, también hay una instrucción print(), que se ejecutará con cada iteración del ciclo for, hasta que el ciclo se rompa, ya que está después de la declaración break.
  5. Para ver cuándo estamos fuera del ciclo, hemos incluido una declaración final print() fuera del ciclo for.

Salida del ejemplo anterior:

Number is 1
Number is 2
Number is 3
Number is 4
Out of loop

Esto muestra que una vez que el número entero se evalúa como equivalente a 5, el ciclo se interrumpe, ya que se le dice al programa que lo haga mediante la instrucción break.

La instrucción break hace que un programa salga de un ciclo.

Declaración continue de Python

La declaración continue de Python es una declaración de salto que se utiliza para omitir la ejecución de la iteración actual. Después de saltar, el bucle continúa con la próxima iteración. En Python, podemos usar la instrucción continue tanto con ciclos for como con ciclos while.

Declaración continue:

Ejemplo de declaración continue de Python:

a=0
while a<=5:
&nbsp;&nbsp;&nbsp; a=a+1
&nbsp;&nbsp;&nbsp; if a%2==0:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; continue
&nbsp;&nbsp;&nbsp; print a
print "End of Loop"

Salida del ejemplo anterior:

1
3
5
End of Loop

Puede usar la instrucción continue para evitar un código condicional profundamente anidado o para optimizar un bucle eliminando los casos frecuentes que desea rechazar.

La instrucción continue hace que un programa omita ciertos factores que surgen dentro de un ciclo, pero luego continúa por el resto del ciclo.

Declaración Pass de Python

En Python, la palabra clave pass se usa para no ejecutar nada; significa que cuando no queremos ejecutar código, el pass se puede usar para ejecutar vacío. Es lo mismo que el nombre al que se refiere. Simplemente hace que el control pase sin ejecutar ningún código. Si deseamos omitir cualquier código, se puede usar una declaración pass.

Pass de Python Ejemplo:

number = 0
for number in range(10):
   number = number + 1
   if number == 5:
      pass   # pasar aquí
   print('Number is ' + str(number))
print('Out of loop')

Salida del ejemplo anterior:

Number is 1
Number is 2
Number is 3
Number is 4
Number is 5
Number is 6
Number is 7
Number is 8
Number is 9
Number is 10
Out of loop

Al usar la instrucción pass en este programa, notamos que el programa se ejecuta exactamente como lo haría si no hubiera una instrucción condicional en el programa. La declaración pass le dice al programa que ignore esa condición y continúe ejecutando el programa como de costumbre.

Cadenas en Python

 

La cadena de Python es un tipo de secuencia de texto incorporada. Se utiliza para manejar datos textuales en Python. Las cadenas de Python son secuencias inmutables de puntos de Unicode. En Python, la creación de cadenas es más simple y fácil de usar

Podemos crear una cadena de Python simplemente encerrando un texto entre comillas simples o dobles. Python trata  igual las declaraciones de comillas simples y dobles.

Ejemplo:

a = "Hello"
b= 'ApkZube'
print(a+" "+b)

Salida del ejemplo anterior:

Hello ApkZube

Acceso a cadenas de Python

  • En Python, las cadenas se almacenan como caracteres individuales en una ubicación de memoria contigua.
  • El beneficio de usar cadenas es que se puede acceder a ellas desde ambas direcciones (hacia adelante y hacia atrás).
  • Al usar cadenas en Python, se proporcionan tanto la indexación hacia adelante como la indexación hacia atrás.
  • La indexación hacia adelante comienza con 0,1,2,3,….
  • La indexación hacia atrás comienza con -1, -2, -3, -4,…
str[0]='P'=str[-6],
str[1]='Y'=str[-5],
str[2]='T'=str[-4],
str[3]='H'=str[-3],
str[4]='O'=str[-2],
str[5]='N'=str[-1].

Ejemplo de cadena de Python

Aquí, estamos creando un programa simple para recuperar una cadena en forma inversa y normal.

name="Rajat"
length=len(name)
i=0
for n in range(-1,(-length-1),-1):
    print(name[i],"\t",name[n])
    i+=1

salida:

R         t
a         a
j         j
a         a
t         R

Operadores de cadenas de Python

Para realizar operaciones en cadenas, Python proporciona básicamente 3 tipos de operadores, que se detallan a continuación.

  1. Operadores Básicos.
  2. Operadores de membresía.
  3. Operadores relacionales.

1. Operadores básicos

Hay dos tipos de operadores básicos de cadenas, + y *.

Operador de concatenación de cadenas (+)

str1="apk"
str2="Zube"
print(str1+str2)

Salida:

apkZube

Operador de concatenación de cadenas (+)

ExpresiónSalida
«10» + «50»«1050»
«apk» + «007»«apk007»
«apk97» + «zube97»«apk97zube97»

NOTA: Ambos operandos pasados ​​para la concatenación deben ser del mismo tipo, de lo contrario, mostrará un error.

Por ejemplo:

print("apkZube"+97)

Salida:

Traceback(most recent call last):
  File "main.py", line 1, in
    print("apkZube"+97)
TypeError: Can't convert 'int' object to str implicitly

Operador de replicación de cadenas de Python (*)

El operador de replicación usa dos parámetros para la operación, uno es un valor entero y el otro argumento es una cadena.

El operador de replicación se usa para repetir una cadena varias veces. La cadena se repetirá la cantidad de veces dada por el valor entero.

Por ejemplo:

print("ApkZube" * 5)
print(3 * "Python")

Salida:

ApkZubeApkZubeApkZubeApkZubeApkZube
PythonPythonPython

Operador de replicación de cadenas de Python(*)

ExpresiónSalida
«ArcX» * 2«ArcXArcX»
3 * ‘5’  ‘555’
‘@’ * 5‘@@@@@’

NOTA: Podemos usar el operador de replicación de cualquier manera, es decir, int * string o string * int. Los dos parámetros pasados ​​no pueden ser del mismo tipo.

2) Operadores de membresía de cadenas de Python

Los operadores de membresía ya se tratan en la sección Operadores. Veámoslos en el contexto de las cadenas.

Hay dos tipos de operadores de membresía:

  1. in: el  operador «in» devuelve verdadero si un carácter o toda una subcadena está presente en la cadena especificada; de lo contrario, devuelve falso.
  2. not in: el  operador «not in» devuelve verdadero si un carácter o una subcadena completa no existe en la cadena especificada, de lo contrario retorna falso.

Veamos el ejemplo:

str1="ApkZube"
str2="Apk"
str3="Zube"
str4="Dev"
print('Example of in operator::')
print(str2 in str1)
print(str3 in str1)
print(str4 in str1)
print()
print(str2 not in str1)
print(str3 not in str1)
print(str4 not in str1)

Salida:

Example of in operator::
True
True
False
False
False
True

3. Operadores relacionales de Python

Todos los operadores de comparación (relacionales), es decir, (<,> <=,> =, ==,! =, <>) También son aplicables para cadenas. Las cadenas se comparan en función de su valor ASCII o Unicode (es decir, el orden del diccionario).

Ejemplo:

print("ApkZube"=="ApkZube")
print("apkZube">="ApkZube")
print("A"<"a")

Salida:

True
True
True

Explicación:

El valor ASCII de a es 97, b es 98, c es 99 y así sucesivamente. El valor ASCII de A es 65, B es 66, C es 67 y así sucesivamente. La comparación entre cadenas se realiza sobre la base de su valor ASCII.

Notación de corte de cadena de Python

El segmento de cadena de Python se puede definir como una subcadena que es parte de la cadena. Por lo tanto, se puede obtener una subcadena adicional de una cadena.

Puede haber muchas formas de cortar una cadena, ya que se puede acceder a ella o indexarla desde ambas direcciones y, por lo tanto, la cadena también se puede cortar desde ambas direcciones.

Sintaxis del Operador Slice:

str [inicio: detener: paso]

Otra sintaxis de corte:

str [inicio: detener]  #ítems desde “inicio” hasta “detener-1”

str [inicio:] #items desde “inicio” hasta el final del arreglo

str [: stop]  #ítems desde el principio hasta “stop-1”

str [:]  # una copia de todo el arreglo

ejemplo:

s="Monty Python"
print(s[6:10])
print(s[-12:-7])
print(s[-1::-1]) #reversed all string
print(s[2: 10: 2]) #step = 2
print(s[:: -1]) #reversed all string
print(s[: 5]) #from 0 to 4
print(s[3: ]) #from 3 to end of the string
print(s[: ]) #copy all string

salida:

Pyth
Monty
nohtyP ytnoM
nyPt
nohtyP ytnoM
Monty
ty Python
Monty Python

NOTA: Ambos operandos pasados ​​para la concatenación deben ser del mismo tipo, de lo contrario, mostrará un error.

Métodos y funciones de las cadenas

Función:

Una función es un bloque de código para realizar una tarea específica, contendrá su propio alcance (scope) y es llamada mediante su nombre. Todas las funciones pueden contener cero argumentos (ningún argumento) o más de un argumento. Al salir de ella, una función puede o no devolver uno o más valores.

  • Una función es un bloque de código que es llamado [ejecutado] mediante su nombre. (independiente)
  • Una función puede tener diferentes parámetros o puede no tener ningún parámetro. Si se le pasan datos (parámetros), se le pasan explícitamente.
  • La función podría o no retornar cualquier dato.
  • La función no trata con clases y ni con su concepto de instancia.
def functionName( arg1, arg2,....):
 .......
   # Function_body
 ........

Método

Un método en python es algo similar a una función, excepto que está asociado con objetos/clases. Los métodos en python son muy similares a las funciones, excepto por dos diferencias principales.

  • A un método se lo llama [ejecuta] mediante su nombre, pero está asociado a un objeto(dependiente).
  • A un método se le pasa implícitamente el objeto en el que se invoca.
  • Puede o no devolver ningún dato.
  • Un método puede operar en los datos (variables de instancia) contenidos en la clase correspondiente.
class ClassName:
   def method_name():
    ..............
      # Method_body
    ..................

Métodos de cadena incorporados

Python incluye los siguientes métodos integrados para manipular cadenas:

  • capitalize() – Capitaliza la primera letra de la cadena [y vuelve minúsculas a las otras letras].

Ejemplo

s="apkZube"
print(s.capitalize())  #Apkzube

Salida del ejemplo anterior:

Apkzube
  • count() – El método count() devuelve el número de ocurrencias de una subcadena “sub” en el rango [start, end]. Los argumentos opcionales start y end se interpretan como en notación de corte.

Sintaxis:

str.count(sub, start = 0, end = len(string))

  • sub – Esta es la subcadena a buscar.
  • start: la búsqueda comienza desde este índice. El primer carácter comienza desde el índice 0. Por defecto, la búsqueda comienza desde el índice 0.
  • end: la búsqueda finaliza en este índice. El primer carácter comienza desde el índice 0. Por defecto, la búsqueda termina en el último índice.
s="I Love Python Tutorial"
print(s.count('o'))  #3
print(s.count('o',5))  #2
print(s.count('t'))  #2
print(s.count('t',2,9))  #0 [el índice 9 no se incluye]

salida del ejemplo anterior:

3
2
2
0
  • index(): el método index() determina si la cadena “str” se produce en string o en una subcadena de string, si se proporcionan el índice inicial y el índice final. Este método es el mismo que find(), pero genera una excepción si no se encuentra “sub”.

Sintaxis: string.index(str, beg, end)

  • str: especifica la cadena a buscar.
  • beg – Este es el índice inicial, por defecto es 0.
  • end: este es el índice final, por defecto es igual a la longitud de la cadena.
s="I Love Python Tutorial"
print(s.index('i'))
print(s.index('i',2))
print(s.index('Love'))
print(s.index('Love',7))
print(s.index('i',0,10))

Salida del ejemplo anterior:

19
19
2
0
Traceback(most recent call last):
  File "main.py", line 16, in
    print(s.index('Love',7)
ValueError: substring not found
  • find(): el método find() determina si la cadena “str” se produce en string, o en una subcadena de string si se proporcionan el índice inicial y el índice final.

str.find(str, beg, final)

  • str: especifica la cadena a buscar.
  • beg – Este es el índice inicial, por defecto es 0.
  • end: este es el índice final, por defecto es igual a la longitud de la cadena.
s="I Love Python Tutorial"
print(s.find('I'))
print(s.find('I',2))
print(s.find('Love'))
print(s.find('t',2,10))

Salida del ejemplo anterior:

0
-1
2
9
  • isalpha(): el método isalpha() verifica si la cadena consta sólo de caracteres alfabéticos.

sintaxis – str.isalpha()

s="I Love Python 3 Tutorial"
print(s.isalpha())
s="Python" # No hay espacios ni dígitos en esta cadena.
print(s.isalpha())

salida del ejemplo anterior:

False
True
  • isalnum(): el método isalnum() verifica si la cadena consta sólo de caracteres alfanuméricos.

Sintaxis: str.isalnum()

s="I Love Python 3 Tutorial"
print(s.isalnum())
s="Python" # No hay espacios
print(s.isalnum())

salida del ejemplo anterior:

False
True
  • isdigit(): el método isdigit() verifica si la cadena consta sólo de dígitos.

Sintaxis – str.isdigit()

s="I Love Python 3 Tutorial"
print(s.isdigit())
s="123" # Esta cadena posee sólo dígitos
print(s.isdigit())

salida del ejemplo anterior:

False
True
  • islower(): el método islower() verifica si todos los caracteres(letras) de la cadena están en minúsculas.

ejemplo:

s="I Love Python 3 Tutorial"
print(s.islower())
p="python"
print(p.islower())

salida del ejemplo anterior:

False
True
  • isnumeric():  el método isnumeric() verifica si la cadena consta de sólo caracteres numéricos. Este método está presente sólo en objetos unicode.

Nota: a diferencia de Python 2, todas las cadenas están representadas en Unicode en Python 3. A continuación se muestra un ejemplo que lo ilustra.

Ejemplo:

str = "apkzube97"
print(str.isnumeric())
str = "10121997"
print(str.isnumeric())

salida del ejemplo anterior:

False
True
  • isspace() –  El método isspace() verifica si la cadena consiste en espacios en blanco

Ejemplo:

str = " "
print(str.isspace())
str = "apkzube"
print(str.isspace())

salida del ejemplo anterior:

True
False
  • istitle():  el método istitle() verifica si [todas las palabras de una cadena tienen la primer letra en mayúsculas y las demás letras en minúsculas] todos los caracteres basados ​​en mayúsculas y minúsculas en la cadena que siguen a las letras no mayúsculas y minúsculas están en mayúsculas y todos los demás caracteres en minúsculas.

Explicación:

s1='I Love Python Tutorial'
print(s1.istitle())
s2='I love python 3'
print(s2.istitle())

salida del ejemplo anterior:

True
False
  • len(): el método len() devuelve la longitud de la cadena.

Ejemplo

s1='I Love Python Tutorial'
print(len(s1))
s2='I love python 3'
print(len(s2))

salida del ejemplo anterior:

22
15
  • lower(): el método lower() devuelve una copia de la cadena en la que todos los caracteres en mayúsculas y minúsculas han sido transformados a minúsculas.

Ejemplo

s1='I Love Python Tutorial'
print(s1.lower())
s2='I love python 3'
print(s2.lower())

salida del ejemplo anterior:

i love python tutorial
i love python 3
  • upper(): el método upper() devuelve una copia de la cadena en la que todos los caracteres en mayúsculas y minúsculas han sido transformados a mayúsculas.

Ejemplo

s1='I Love Python Tutorial'
print(s1.upper())
s2='I love python 3'
print(s2.upper())

salida del ejemplo anterior:

I LOVE PYTHON TUTORIAL
I LOVE PYTHON 3
  • max(): el método max() devuelve el carácter alfabético máximo de la cadena str.

Ejemplo

s1='I Love Python Tutorial'
print(max(s1))
s2='apkzube'
print(max(s2))

salida del ejemplo anterior:

y
z
  • min(): el método min() devuelve el carácter alfabético min de la cadena str.

Ejemplo

s1='PythonTutorial'
print(min(s1))
s2='apkzube'
print(min(s2))

salida del ejemplo anterior:

P
a
  • lstrip(): el método lstrip() devuelve una copia de la cadena en la que se han eliminado todos los caracteres desde el principio de la cadena (caracteres de espacio en blanco predeterminados).
  • rstrip(): el método rstrip() devuelve una copia de la cadena en la que se han eliminado todos los caracteres del final de la cadena (caracteres de espacio en blanco predeterminados).

str.lstrip([caracteres])

str.rstrip([chars])

Ejemplo:

s1=' I Love Python Tutorial' #Tiene un espacio en blanco después de la primera comilla.
print(s1.lstrip())
s2='###ApkZube###'
print(s2.lstrip('#'))
print(s2.rstrip('#'))

salida del ejemplo anterior:

I Love Python Tutorial
ApkZube###
###ApkZube
  • replace(): el método replace() devuelve una copia de la cadena en la que las ocurrencias de “antiguo” se han reemplazado por “nuevo”, restringiendo opcionalmente el número de reemplazos a “max”.

str.replace(antiguo, nuevo, [max])

Ejemplo:

  • antiguo: esta es una subcadena antigua que se va a reemplazar.
  • nuevo – Esta es una nueva subcadena, que reemplazará a la antigua subcadena.
  • max: si se proporciona este argumento opcional max, se reemplazarán sólo las primeras “max” ocurrencias.
s1='I Love Python Tutorial, I Love ApkZube, I Love Coding'
print(s1.replace('Love','Like'))
print(s1.replace('I','He',2))

salida del ejemplo anterior:

I Like Python Tutorial, I Like ApkZube, I Like Coding
He Love Python Tutorial, He Love ApkZube, I Love Coding
  • split() – El método split() devuelve una lista de todas las palabras en la cadena, usando «str» como separador (se divide en todos los espacios en blanco si no se especifica), opcionalmente limita el número de divisiones a «num».

string.split(str = «», num = string.count(str)).

Ejemplo

str - Esto es cualquier delimitador, por defecto es espacio.
num - este es el número de cortes a realizar
s1='I Love Python,Java,Android,PHP,JavaScript'
print(s1.split(','))
print(s1.split(',',2)) #hay 3 elementos en total en la lista

salida del ejemplo anterior:

['I Love Python', 'Java', 'Android', 'PHP', 'JavaScript']
['I Love Python', 'Java', 'Android,PHP,JavaScript']
  • swapcase(): el método swapcase() devuelve una copia de la cadena en la que todos los caracteres ​​en mayúsculas y minúsculas han sido intercambiados.

Ejemplo

s1='I Love Python,Java,Android,PHP,JavaScript'
print(s1.swapcase())
salida del ejemplo anterior:
i lOVE pYTHON,jAVA,aNDROID,php,jAVAsCRIPT

Lista de Python

La lista de Python es una estructura de datos que se utiliza para almacenar varios tipos de datos. En Python, las listas son mutables, es decir que Python no creará una nueva lista si modificamos un elemento de la lista.

Funciona como un contenedor que contiene otros objetos, en un orden determinado. Podemos realizar varias operaciones en la lista, como inserción y eliminación. Una lista se puede compilar almacenando una secuencia de diferentes tipos de valores separados por comas.

La lista de Python está encerrada entre corchetes([]) y los elementos se almacenan en base a su índice, con el índice inicial 0.

Sintaxis:

<list_name> = [valor1, valor2, valor3,…, valorn]; 

list=['foo','bar','baz','quz','quux','corge']
print(list)
my_list=[1,2,3,4,4.5,'apkzube','X']
print(my_list)

Se puede crear una lista colocando los valores entre corchete, separados por comas.

Salida del programa anterior:

['foo', 'bar', 'baz', 'quz', 'quux', 'corge']
[1, 2, 3, 4, 4.5, 'apkzube', 'X']
  • Sintaxis para acceder a la lista de Python

<list_name> [índice] 

Podemos usar el operador de corte para acceder a los elementos de la lista.

<list_name> [inicio: detener: paso] 

Ejemplo:

list=['foo','bar','baz','quz','quux','corge']
print(list[2])
print(list[4:6])
print(list[-4:-1])
print(list[1:5:2])
print(list[-1::-1]) #reverse list

salida del ejemplo anterior:

baz
['quux', 'corge']
['baz', 'quz', 'quux']
['bar', 'quz']
['corge', 'quux', 'quz', 'baz', 'bar', 'foo']

Nota: Organización de la memoria interna:

La lista no almacena los elementos directamente en el índice. De hecho, se almacena una referencia en cada índice que posteriormente se refiere al objeto almacenado en algún lugar de la memoria. Esto se debe al hecho de que algunos objetos pueden ser lo suficientemente grandes como otros objetos y, por lo tanto, se almacenan en alguna otra ubicación de memoria.

  • Iteración de la lista: en Python, podemos usar el bucle for para iterar en la lista; esta es una forma común de iterar en las listas.
list1=['a','b','c',1,2,3]
for x in list1:
    print(x)

salida:

a
b
c
1
2
3

Operaciones de lista de Python

Además de permitirnos crear elementos de la lista y acceder a ellos, Python nos permite realizar varias otras operaciones en la lista. Algunas operaciones comunes se dan a continuación.

  • Agregar listas de Python

En Python, las listas se pueden agregar utilizando el operador de concatenación ( + ) para unir dos listas.

list1=['a','b','c']
list2=['x','y','z']
list3=list1+list2
print(list3)

salida del ejemplo anterior:

['a', 'b', 'c', 'x', 'y', 'z']

Nota: el operador ‘+’ implica que ambos operandos pasados ​​deben ser una lista, de lo contrario se mostrará un error.

corramos ejemplo:

list1=['a','b','c']
a='x'
print(list1+a)

salida del ejemplo anterior:

Traceback(most recent call last):
File "main.py", line 11, in
  print(list1+a)
TypeError: can only concatenate list(not "str") to list
  • Replicación de listas de Python

Replicar significa repetir. Se puede realizar utilizando el operador ‘*’ por un número específico de veces.

Ejemplo:

list1=['a','b','c']
print(list1*3)

salida del ejemplo anterior:

['a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c']
  • Corte de lista de Python

Se puede recuperar una subparte de una lista en función del índice. Esta subparte se conoce como corte de lista. Esta característica nos permite obtener una sublista de los índices de inicio y finalización especificados.

<list_name> [inicio: detener: paso] 

Ejemplo:
list=['foo','bar','baz','quz','quux','corge']
print(list[4:6])
print(list[-4:-1])
print(list[1:5:2])
print(list[-1::-1]) #lista inversa

salida del ejemplo anterior:

['quux', 'corge']
['baz', 'quz', 'quux']
['bar', 'quz']
['corge', 'quux', 'quz', 'baz', 'bar', 'foo']

Nota: Si el índice proporcionado en el segmento de la lista está fuera de la lista, entonces el compilador genera una excepción IndexError.

Otras operaciones de listas en Python

Además de las operaciones anteriores, también se pueden realizar otras funciones en la Lista, como Actualizar, Anexar y Eliminar elementos de una Lista.

  • Actualización de la lista: para actualizar o cambiar el valor de un índice particular de una lista, asigne el valor a ese índice particular de la lista.

Ejemplo:

data1=[5,10,15,20,25]
print("Values of list are: " )
print(data1)
data1[2]="Multiple of 5"
print("Values of list are: ")
print(data1)

salida del ejemplo anterior:

Values of list are:
[5, 10, 15, 20, 25]
Values of list are:
[5, 10, 'Multiple of 5', 20, 25]
  • Anexión a una lista: Python proporciona el método append() que se utiliza para agregar, es decir, agregar un elemento al final de los elementos existentes.

Ejemplo:

list1=['a','b','c']
list1.append(1.5)
list1.append('x')
list1.append(['y','z']) #anexa una lista como una simple cadena a la lista
print(list1)

salida del ejemplo anterior:

['a', 'b', 'c', 1.5, 'x', ['y', 'z']]
  • Eliminar elementos: en Python, la instrucción ‘del’ se puede usar para eliminar un elemento de la lista. También se puede usar para eliminar todos los elementos desde el índice start hasta el índice end.

Ejemplo:

list1=['a','b','c']
print("data in list: ",list1)
del(list1[2])
print("new data in list: ",list1)

salida del ejemplo anterior:

data in list: ['a', 'b', 'c']
new data in list: ['a', 'b']

Funciones y método de las listas de Python

Python proporciona varias funciones y métodos integrados para listas que podemos aplicar en la lista.

Las siguientes son las funciones comunes de la lista.

funciónDescripción
min(lista)Devuelve el valor mínimo de la lista dada.
max(lista)       Devuelve el valor más grande de la lista dada.
len(lista)Devuelve el número de elementos en una lista.
cmp(lista1, lista2)      Compara las dos listas. Ya no está disponible en Python 3.
lista(seq)        Toma tipos de secuencia y los convierte en listas
  • min(lista): este método se utiliza para obtener el valor min de la lista. En las listas de Python3,todos los elementos deben ser del mismo tipo, de lo contrario, el compilador arroja TypeError.

Ejemplo:

list1 = ['a','b','c']
list2 = [1,2,3]
list3=['a','b','c',1,2,3]
print(min(list1))  #a
print(min(list2))  #1
print(min(list3))  #typeError

salida del ejemplo anterior:

a
1
File "main.py", line 15, in
&nbsp;&nbsp;&nbsp; print(min(list3))
TypeError: unorderable types: int() < str()
  • max(): el método max() devuelve los elementos de la lista, que tienen el valor máximo.

Ejemplo:

list1 = ['a','b','c']
list2 = [1,2,3]
list3=['a','b','c',1,2,3]
print(max(list1))  #c
print(max(list2))  #3
print(max(list3))  #typeEror

salida del ejemplo anterior:

c
3
Traceback(most recent call last):
&nbsp; File "main.py", line 15, in
&nbsp;&nbsp;&nbsp; print(max(list3))
TypeError: unorderable types: int() > str()
  • len(): el método len() devuelve el número de elementos en la lista.

Ejemplo:

list1 = ['a','b','c']
list2 = []
list3=['a','b','c',1,2,3]
print(len(list1))
print(len(list2))
print(len(list3))

salida del ejemplo anterior:

3
0
6
  • list(): el método list() toma tipos de secuencia y los convierte en listas. Esto se usa para convertir una tupla dada en una lista.

Las tuplas son muy similares a las listas, con la única diferencia de que los valores de los elementos de una tupla no se pueden cambiar y que los elementos de la tupla se colocan entre paréntesis en lugar de entre corchetes. Esta función también convierte los caracteres de una cadena en una lista.

Ejemplo:

t=(1997, 'C++', 'Java', 'Python')
list1 = list(t)
print("List elements: ", list1)
str = "ApkZube"
list2 = list(str)
print("List elements: ", list2)

salida del ejemplo anterior:

List elements: [1997, 'C++', 'Java', 'Python']
List elements: ['A', 'p', 'k', 'Z', 'u', 'b', 'e']

Python incluye los siguientes métodos de lista

métododescripción
list.count(obj)Devuelve el recuento de cuántas veces aparece obj en la lista
list.extend(seq)Agrega los contenidos de seq a la lista
list.append(obj)           Agrega objeto obj a la lista
list.index(obj) Devuelve el índice más bajo de la lista en el que aparece obj
list.insert(index, obj)           Inserta el objeto obj en la lista en el índice index
list.pop(obj = lista[-1])Elimina y devuelve el último objeto u obj de la lista
list.remove(obj)Elimina el objeto obj de la lista
list.reverse()   Invierte objetos de la lista en su lugar
list.sort([func])Ordena los objetos de la lista, usa la función de comparación si se proporciona
  • count(): el método count() devuelve el recuento de cuántas veces se produce obj en la lista.

Ejemplo:

list1=[1,2,3,'a','b','c',1,2,3]
print(list1.count(1))
print(list1.count('b'))
print(list1.count(4))

salida del ejemplo anterior:

2
1
0
  • append(): el método append() agrega un obj dado a la lista existente.

Ejemplo:

list1 =[1,2,3]
list1.append(4)
list1.append('apkzube')
list1.append(['a','b','c']) #append as single object
print(list1)

salida del ejemplo anterior:

[1, 2, 3, 4, 'apkzube', ['a', 'b', 'c']]
  • extend() – El método extend() agrega los contenidos de seq a la lista.

list.extend([seq])

Ejemplo:

list1 =[1,2,3]
list1.extend([4])
list1.extend('apkzube')
list1.extend(['a','b','c'])
print(list1)

salida del ejemplo anterior:

[1, 2, 3, 4, 'a', 'p', 'k', 'z', 'u', 'b', 'e', 'a', 'b', 'c']
  • index(): el método index() devuelve el índice más bajo de la lista en el que aparece obj.

Ejemplo:

list1 =['apkzube','python','java','c++',1,2,3]
print("index of java: ",list1.index('java'))
print("index of 2: ",list1.index(2))

salida del ejemplo anterior:

index of java: 2
index of 2: 5
  • insert(): el método insert() inserta el objeto obj en la lista, en el índice de index.

list.insert(index, obj)

index: este es el índice donde se debe insertar el objeto obj.

obj: este es el objeto que se insertará en la lista dada.

Ejemplo:

list1 =['apkzube','python','java','c++',1,2,3]
list1.insert(3,'C#')
print(list1)

salida del ejemplo anterior:

['apkzube', 'python', 'java', 'C#', 'c++', 1, 2, 3]
  • pop(): el método pop() elimina y devuelve el último objeto u obj de la lista.

list.pop(index)

index− Este es un parámetro opcional, índice del objeto que se eliminará de la lista. Por defecto es -1 [último elemento]

Ejemplo:

list1 =['apkzube','python','java','c++',1,2,3]
list1.pop() # 3 is pop
print(list1)
list1.pop(2) # list[2] = "java" pop
print(list1)

salida del ejemplo anterior:

['apkzube', 'python', 'java', 'c++', 1, 2]
['apkzube', 'python', 'c++', 1, 2]
  • remove(obj):  El objeto obj se eliminará de la lista.

Ejemplo:

list1 =['apkzube','python','java','c++',1,2,3]
list1.remove("java")
print(list1)
list1.remove(2)
print(list1)

salida del ejemplo anterior:

['apkzube', 'python', 'c++', 1, 2, 3]
['apkzube', 'python', 'c++', 1, 3]
  • reverse(): el método reverse() invierte los objetos de la lista en su lugar.

Ejemplo:

list1 =['apkzube','python','java','c++',1,2,3]
list1.reverse()
print(list1)

salida del ejemplo anterior:

[3, 2, 1, 'c++', 'java', 'python', 'apkzube']
  • sort() – El método sort() clasifica los objetos de la lista, usa la función de comparación si se proporciona. Pero el tipo de elementos en la lista debe ser el mismo, de lo contrario, el compilador arroja typeError.

Ejemplo 1:

list1 =[22,30,100,300,399]
list2=['z','ab','abc','a','b']
list1.sort()
list2.sort()
print(list1)
print(list2)

salida del ejemplo anterior:

[22, 30, 100, 300, 399]
['a', 'ab', 'abc', 'b', 'z']

Ejemplo 2

list3=['a','b',1,2]
list3.sort()
print(list3)

salida del ejemplo anterior:

Traceback(most recent call last):
File "main.py", line 9, in
&nbsp; list3.sort()
&nbsp; TypeError: unorderable types: int() < str()

Tupla de Python

Una tupla de Python es una secuencia inmutable de objetos. Las tuplas son secuencias, al igual que las listas. La principal diferencia entre las tuplas y las listas es que las tuplas no se pueden modificar a diferencia de las listas. Las tuplas usan paréntesis(), mientras que las listas usan corchetes [].

La tupla es similar a la lista. La única diferencia es que la lista está encerrada entre corchetes; la tupla, entre paréntesis; y la lista tiene objetos mutables, mientras que la tupla tiene objetos inmutables.

tupla=()  #tupla vacía

Ejemplo: Crear una tupla es tan simple como poner diferentes valores separados por comas. Opcionalmente, también puede poner estos valores separados por comas entre paréntesis.

t1=('a','b',1,2,3.14,"ApkZube")
t2="a", "b", "c", "d"
#esta tupla contiene una lista y otra tupla
t3 =(1,2,3,['a','b','c'],('z',26))
print(t1)
print(t2)
print(t3)

salida del ejemplo anterior:

('a', 'b', 1, 2, 3.14, 'ApkZube')
('a', 'b', 'c', 'd')
(1, 2, 3, ['a', 'b', 'c'],('z', 26))

Para crear una tupla con un solo valor, debe haber una coma al final del valor.

t1=(5,)
print(t1)

salida del ejemplo anterior:

(5,)

Acceso a valores en tuplas

Para acceder a los valores de la tupla, use corchetes para segmentar, junto con el índice o los índices para obtener el valor disponible en ese índice. Por ejemplo –

tupla [índice]

sintaxis del operador de corte:

tupla [inicio: parada: paso]

por defecto el paso es +1

t=(3,7,4,2)
print(t[2])
print(t[1:3])
print(t[-4:-2])
print(t[-1: : -1])  ‘’’comienza desde -1 y tiene step=-1, entonces básicamente retorna la tupla inversa’’’

salida del ejemplo anterior:

4
(7, 4)
(3, 7)
(2, 4, 7, 3)

La iteración en la tupla mediante un bucle for es la misma que la de la lista:

t=("apkzube",'xyz',1,2,3)
for x in t:
    print(x)

salida:

apkzube
xyz
1
2
3

Operaciones de tuplas

Python nos permite realizar varias operaciones en la tupla. Las siguientes son las operaciones comunes de tuplas.

  • Agregar tuplas

Las tuplas se pueden agregar utilizando el operador de concatenación (+) para unir dos tuplas y crear una nueva tupla.

Nota: La nueva secuencia formada es una nueva Tupla.

Ejemplo:

t1=(1,2,3)
t2=('x','y','z')
t3=t1+t2
print(t3)

salida del ejemplo anterior:

(1, 2, 3, 'x', 'y', 'z')
  • Replicar Tuplas

Replicar significa repetir. Se puede realizar utilizando el operador ‘*’ por un número específico de veces.

Ejemplo:

t1=(1,2,3)
t2=('x','y','z')
print(t1*2)
print(t2*3)

salida del ejemplo anterior:

(1, 2, 3, 1, 2, 3)
('x', 'y', 'z', 'x', 'y', 'z', 'x', 'y', 'z')
  • Actualización de tuplas

Las tuplas son inmutables, lo que significa que no puede actualizar o cambiar los valores de sus elementos. Pero se pueden tomar porciones de tuplas existentes para crear nuevas tuplas, como el siguiente ejemplo:

t1 =(1, 2,3)
t2 =('abc', 'xyz')
‘’’ La siguiente acción no es válida para las tuplas’’’ # t1[0] = 4;
# Entonces vamos a crear una nueva tupla, como sigue
t3 = t1 + t2
print(t3)

salida del ejemplo anterior:

(1, 2, 3, 'abc', 'xyz')
  • Eliminar elementos de la tupla

No es posible eliminar elementos individuales de la tupla. Por supuesto, no hay nada de malo en juntar otra tupla con los elementos no deseados descartados. Para eliminar explícitamente una tupla completa, solo use la instrucción del. Por ejemplo

t =('apkZube', 'python', 1, 2);
print(t)
del t;
print("After deleting t:")
print(t)

salida del ejemplo anterior:

('apkZube', 'python', 1, 2)
After deleting t:
Traceback(most recent call last):
  File "main.py", line 15, in
    print(t)
NameError: name 't' is not defined

Funciones de tupla incorporadas

funciónDescripción
cmp(t1, t2)Compara elementos de ambas tuplas(py 2.x). En Python 3 se eliminó la función incorporada de cmp
len(tupla)           Da la longitud total de la tupla.
max(tupla)Devuelve el artículo de la tupla con el valor máximo.
min(tupla)           Devuelve el artículo de la tupla con el valor mínimo.
tupla(seq)Convierte una secuencia en tupla.
  • len(tupla): el método len() devuelve el número de elementos en la tupla.

Ejemplo:

t1=(1,2,3,4,5)
t2 =('x','y','z',[1,2],3)
print(len(t1))
print(len(t2))

salida del ejemplo anterior:

5
5
  • max(tuple): el método max() devuelve los elementos de la tupla con el valor máximo. El tipo de elementos debe ser el mismo; de lo contrario, el compilador lanza TypeError.

Ejemplo:

t1=(1,2,3,4,5)
t2 =('x','y','z')
print(max(t1))
print(max(t2))

salida del ejemplo anterior:

5
z
  • min(tupla): el método min() devuelve los elementos de la tupla con el valor mínimo. El tipo de elemento debe ser el mismo; de lo contrario, el compilador lanza TypeError.

Ejemplo:

t1=(1,2,3,4,5)
t2 =('x','y','z')
print(min(t1))
print(min(t2))

salida del ejemplo anterior:

1
x
  • tuple(seq): el método tuple() convierte una lista de elementos en una tupla.

Ejemplo:

s="apkzube"
t1=tuple(s)
list=[1,2,3]
t2=tuple(list)
print(t1)
print(t2)

salida del ejemplo anterior:

('a', 'p', 'k', 'z', 'u', 'b', 'e')
(1, 2, 3)

¿Por qué debería usar Tuplas?(Ventajas de las Tuplas)

  • El procesamiento de las tuplas es más rápido que el de las listas.
  • Las hacen que los datos sean seguros, ya que son inmutables y, por lo tanto, no se pueden cambiar.
  • Las tuplas se usan para formatear cadenas.

Diccionarios de Python

Un diccionario es un conjunto desordenado de pares de clave/valor. Es un contenedor que contiene datos, encerrados entre llaves. Cada par, es decir, una clave y un valor, se conoce como ítem. La clave pasada en cada ítem debe ser única.

La clave y el valor de cada ítem están separados por dos puntos (:). Los distintos ítems están separados entre sí por una coma (,) y están encerrados entre llaves. Esto forma el Diccionario.

dict = { }  #diccionario vacío
dict = {1:'Python',2:'Java',3:'C++'}
  • El diccionario es mutable, es decir, sus valores pueden actualizarse.
  • Las claves deben ser únicas e inmutables. Se accede al valor por clave. Los valores se pueden actualizar, mientras que las claves no se pueden cambiar.
  • El diccionario se conoce como matriz asociativa ya que las claves funcionan como índice y las decide el usuario.

Acceso a valores del diccionario

Como el índice no está definido, sólo se puede acceder a los valores de un diccionario mediante sus claves. Significa que, para acceder a los elementos del diccionario, necesitamos pasar la clave  asociada al valor.

sintaxis:

<dictionary_name> [clave]     

dict = {1:'Python',2:'Java',3:'C++','c': 'Gods language'}
print(dict[1])
print(dict['c'])

salida:

Python
Gods language

iteración sobre todos los ítems usando un bucle for para el método keys(), el método keys() devuelve la lista de todas las teclas del diccionario.

dict = {1:'Python',2:'Java',3:'C++','c': 'Gods language'}
print(dict.keys())
for x in dict.keys():
    print(dict[x])

salida:

dict_keys([1, 2, 3, 'c'])
Python
Java
C++
Gods language

Si intentamos acceder a un valor con una clave que no es parte del diccionario, obtenemos el siguiente error:

dict = {1:'Python',2:'Java',3:'C++','c': 'Gods language'}
print(dict[4])

salida del ejemplo anterior:

Traceback(most recent call last):
&nbsp; File "main.py", line 9, in < module>
&nbsp;&nbsp;&nbsp; print(dict[4])
KeyError: 4

Actualización de elementos del diccionario

Puede actualizar un diccionario agregando una nueva entrada o un par clave-valor, modificando una entrada existente o eliminando una entrada existente como se muestra en un ejemplo simple a continuación

dict = {1:'Python',2:'Java',3:'C++'}
dict[3]="C#"
dict[4]="PHP" #inserta un valor nuevo
print(dict)

salida del ejemplo anterior:

{1: 'Python', 2: 'Java', 3: 'C#', 4: 'PHP'}

Eliminar elementos del diccionario

La declaración del se utiliza para realizar la operación de eliminación. Un elemento se puede eliminar de un diccionario utilizando sólo su clave correspondiente. Para eliminar explícitamente un diccionario completo, sólo use la instrucción del. El siguiente es un ejemplo simple:

Ejemplo:

dict = {1:'Python',2:'Java',3:'C++',4: 'PHP'}
del dict[3] # remueve la entrada cuya clave es 3
print(dict)
dict.clear() # remueve todas las entradas del diccionario
print("dict: ",dict)
del dict # elimina el diccionario entero
print(dict[2])

salida del ejemplo anterior:

{1: 'Python', 2: 'Java', 4: 'PHP'}
dict: {}
Traceback(most recent call last):
  File "main.py", line 17, in
    print(dict[2])
TypeError: 'type' object is not subscriptable

Funciones y métodos incorporados de diccionario

funciones de diccionario

funcióndescripción
cmp(dict1, dict2)           Ya no está disponible en Python 3.  
len(dict)          Da la longitud total del diccionario. Esto sería igual al número de ítems en el diccionario.
str(dict)          Produce una representación de cadena imprimible de un diccionario
type(variable)Devuelve el tipo de la variable pasada. Si la variable pasada es diccionario, entonces devolvería un tipo de diccionario.

métodos de diccionario                    

métododescripción
dict.clear()     Elimina todos los elementos del diccionario dict
dict.copy()     Devuelve una copia simple del diccionario dict  
dict.fromkeys()Crea un nuevo diccionario con claves de seq y valores establecidos en value.
dict.get(key, default = None)Para la clave key, devuelve el valor o el valor predeterminado si la clave no está en el diccionario
dict.has_key(clave)   Eliminado, utilice la operación in en su lugar.
dict.items()     Devuelve una lista de pares de tuplas de dict(clave, valor)
dict.keys()      Devuelve la lista de claves del diccionario dict
dict.setdefault(key, default = None)Similar a get(), pero establecerá dict[key] = default si la clave aún no está en dict
dict.update(dict2)Agrega los pares clave-valor del diccionario dict2 a dict
dict.values()   Devuelve la lista de valores del diccionario dict

len(dict): el método len() proporciona la longitud total del diccionario. Esto sería igual al número de elementos en el diccionario.

Ejemplo:

dict = {1:'Python',2:'Java',3:'C++',4: 'PHP'}
print(len(dict))

salida del ejemplo anterior:

4
  • str(dict): el método str() produce una representación de cadena imprimible de un diccionario.

Ejemplo:

dict = {1:'Python',2:'Java',3:'C++',4: 'PHP'}
print(str(dict))

salida del ejemplo anterior:

{1: 'Python', 2: 'Java', 3: 'C++', 4: 'PHP'}
  • type(): el método type() devuelve el tipo de la variable pasada. Si la variable pasada es diccionario, devolvería un tipo de diccionario.

Ejemplo:

dict = {1:'Python',2:'Java',3:'C++',4: 'PHP'}
print(type(dict))

salida del ejemplo anterior:

<class 'dict'>
  • clear(): el método clear() elimina todos los elementos del diccionario.

Ejemplo:

dict = {1:'Python',2:'Java',3:'C++',4: 'PHP'}
print(str(dict))
dict.clear()
print(str(dict))

salida del ejemplo anterior:

{1: 'Python', 2: 'Java', 3: 'C++', 4: 'PHP'}
{}
  • copy(): el método copy() devuelve una copia simple del diccionario.

Ejemplo:

dict1 = {1:'Python',2:'Java',3:'C++',4: 'PHP'}
dict2=dict1.copy()
print(dict2)

salida del ejemplo anterior:

{1: 'Python', 2: 'Java', 3: 'C++', 4: 'PHP'}
  • fromkeys(): el método fromkeys() crea un nuevo diccionario con claves de seq y valores establecidos en value.

dict.fromkeys(seq [, valor]))

Ejemplo:

seq =('java', 'python', 'c++')
dict = dict.fromkeys(seq)
print("New Dictionary: %s" % str(dict))
dict = dict.fromkeys(seq, 50)
print("New Dictionary: %s" % str(dict)) ´´´“%s” es un marcador para cadenas´´´

salida del ejemplo anterior:

New Dictionary: {'python': None, 'java': None, 'c++': None}
New Dictionary: {'python': 50, 'java': 50, 'c++': 50}
  • items(): el método items() devuelve una lista tuplas de de pares clave-valor.

Ejemplo:

dict1 = {1:'Python',2:'Java',3:'C++',4: 'PHP'}
print(dict1.items())

salida del ejemplo anterior:

dict_items([(1, 'Python'),(2, 'Java'),(3, 'C++'),(4, 'PHP')])
  • keys(): el método keys() devuelve una lista de todas las claves disponibles en el diccionario.

Ejemplo:

dict1 = {1:'Python',2:'Java',3:'C++',4: 'PHP'}
all_keys=dict1.keys()
print(all_keys)

salida del ejemplo anterior:

dict_keys([1, 2, 3, 4])
  • update(): el método update() agrega los pares clave-valor del diccionario dict2 a dict. Esta función no devuelve nada.

dict.update(dict2)

Ejemplo:

dict1 = {1:'Python',2:'Java',3:'C++',4: 'PHP'}
dict2= {1: 'Python3',5:'C'} #actualiza ‘Python’ a ‘Python3’
dict1.update(dict2)
print(dict1)

salida del ejemplo anterior:

{1: 'Python3', 2: 'Java', 3: 'C++', 4: 'PHP', 5: 'C'}
  • value(): el método values ​() devuelve una lista de todos los valores disponibles en un diccionario dado.

Ejemplo:

dict1 = {1:'Python',2:'Java',3:'C++',4: 'PHP'}
values= dict1.values()
print(values)

salida del ejemplo anterior:

dict_values(['Python', 'Java', 'C++', 'PHP'])
  • setdefault(): el método setdefault() es similar a get(), pero establecerá dict[key] = default si la clave aún no está en dict.

dict.setdefault(key, default = None)

key: esta es la clave que se debe buscar.

default: este es el valor que se devolverá en caso de que no se encuentre la clave.

Ejemplo:

dict={'emp_name':'Vishal','age':21,'emp_id':101}
dict.setdefault('company','apkzube')
print(dict['emp_name'])
print(dict['company'])

salida del ejemplo anterior:

Vishal
apkzube

Funciones de Python

Una función es un bloque de código organizado y reutilizable que se utiliza para realizar una sola acción relacionada. Las funciones proporcionan una mejor modularidad para su aplicación y un alto grado de reutilización de código.

Como ya sabe, Python le ofrece muchas funciones integradas como print(), etc., pero también puede crear sus propias funciones. Estas funciones se denominan funciones definidas por el usuario.

Definiendo una Función

  1. La palabra clave def se usa para iniciar y declarar una función. def especifica el inicio del bloque de funciones.
  2. def es seguido por el nombre de la función seguido por paréntesis.
  3. Los parámetros se pasan dentro del paréntesis. Al final se marca un colon.
  4. El código de Python requiere sangría (espacio) de código para mantenerlo asociado al bloque declarado.
  5. La primera declaración de la función es opcional. Es la cadena de documentación de la función.
  6. A continuación se presenta la declaración que se ejecutará.
  7. La sentencia return [expresión] sale de una función, opcionalmente devuelve una expresión a la persona que llama a la función. Una declaración return sin argumentos es lo mismo que return None.

Sintaxis

def functionname( parameters ):
 "function_docstring"
 function_suite
 return [expression]

Por defecto, los parámetros tienen un comportamiento posicional y debe informarlos en el mismo orden en que fueron definidos.

Ejemplo:

def sum(a,b):
  c=a+b
  return c

Llamar a una función

Para ejecutar una función, se la debe llamar. Esto se denomina llamada a función. La definición de función proporciona la información sobre el nombre de la función, los parámetros y la definición de qué operación se va a realizar. Para ejecutar la definición de la función, necesitamos llamar a la función.

Ejemplo:

def swap(x, y):
    temp = x;
    x = y;
    y = temp;
    return
x = 2
y = 3
swap(x, y) #llamada a la función
print(x)
print(y)

salida del ejemplo anterior:

2
3

Declaración de retorno de la función de Python

return [expresión] se utiliza para devolver una respuesta a la llamada a la función. Podemos usar la expresión con la palabra clave return. mediante la la expresión, devuelve el control a la persona que llama a la función. En caso de que no se proporcione ninguna expresión después de return, la función retornará None. En otras palabras, la declaración de retorno se utiliza para salir de la definición de la función.

def sum(a,b):
    print("Adding the two values")
    print("Printing within Function")
    print(a+b)
    return a+b
def msg():
    print("Hello")
    return
total=sum(10,20)
print('total: ',total)
msg()
print("Rest of code")

salida del ejemplo anterior:

Adding the two values
Printing within Function
30
total: 30
Hello
Rest of code

Argumentos y parámetros de las funciones

Puede haber dos tipos de datos pasados ​​en la función.

  • El primer tipo de datos son los datos pasados ​​en la llamada a la función. Estos datos se llaman argumentos.
  • El segundo tipo de datos son los datos recibidos en la definición de la función. Estos datos se llaman parámetros.

Los argumentos pueden ser literales, variables y expresiones. Los parámetros deben ser variables para contener los valores entrantes.

Alternativamente, los argumentos pueden ser llamados parámetros reales o argumentos reales y los parámetros pueden ser llamados parámetros formales o argumentos formales.

# x es el parámetro o parámetro formal o argumento formal.
def evenOdd( x ):
    if(x % 2 == 0):
        print("even")
    else:
        print("odd")
# Driver code
evenOdd(2)   #aquí 2 es el argumento o parámetro real
evenOdd(3)   #aquí 3 es el argumento o parámetro real

salida del ejemplo anterior:

even
odd

Argumentos de funciones

Puede llamar a una función utilizando los siguientes tipos de argumentos formales:

  1. Argumentos requeridos
  2. Argumentos de palabras clave
  3. Argumentos predeterminados
  4. Argumentos de longitud variable
  • Argumentos requeridos: los argumentos requeridos son los argumentos pasados ​​a una función en el orden posicional correcto. Aquí, el número de argumentos en la llamada a la función debe coincidir exactamente con el número de argumentos de la definición de la función.
def cube(x):
    "This x a passed num value into this function, return cube of x"
    y=x*x*x;
    return y
# Ahora usted puede llamar a la función cube()
z=cube(2)  #argumento de pasaje requerido
print(z)

salida del ejemplo anterior:

8
  • Argumentos de palabras clave: los argumentos de palabras clave están relacionados con las llamadas a funciones. Cuando utiliza argumentos de palabras clave en una llamada de función, la persona que llama a la función identifica los argumentos mediante los nombres de los parámetros.

Esto le permite omitir argumentos o desordenarlos porque el intérprete de Python puede usar las palabras clave proporcionadas para hacer coincidir los valores con los parámetros.

def remainder(dividend,divisor):
    x=dividend%divisor
    return x
rem = remainder(divisor = 3, dividend = 10) ‘’’argumentos de palabras clave’’’
print("remainder of 10/3: ",rem)

salida del ejemplo anterior:

remainder of 10/3: 1
  • Argumentos predeterminados: un argumento predeterminado es un argumento que asume un valor predeterminado si no se proporciona un valor para ese argumento en la llamada a la función. El siguiente ejemplo da una idea sobre los argumentos predeterminados, imprime la compañía predeterminada si no se pasa una compañía como argumento.
def emp_data(name,emp_id,age,company = "self employee"):
    print("Details of: ",name)
    print("Emp Id: ",emp_id)
    print("Age: ",age)
    print("Company: ",company)
#llamada a la función emp_data()
emp_data("Vishal",101,21,"ApkZube")
print("-----------------------")
emp_data("Jignesh",102,22)

salida del ejemplo anterior:

Details of: Vishal
Emp Id: 101
Age: 21
Company: ApkZube
-----------------------
Details of: Jignesh
Emp Id: 102
Age: 22
Company: self employee
  • Argumentos de longitud variable: es posible que deba procesar una función para obtener más argumentos que los que especificó al definir la función. Estos argumentos se denominan argumentos de longitud variable y no se nombran en la definición de la función, a diferencia de los argumentos obligatorios y predeterminados.

La sintaxis para una función con argumentos de longitud variable, que no tienen palabras clave, se proporciona a continuación

def functionname([formal_args,] *var_args_tuple ):
    "function_docstring"
    function_suite
    return [expression]
  • Se coloca un asterisco (*) antes del nombre de la variable que contiene los valores de todos los argumentos de longitud variable, que no tienen palabras clave. Esta tupla permanece vacía si no se especifican argumentos adicionales durante la llamada a la función. El siguiente es un ejemplo simple:
def printinfo( arg1, *vartuple ):
    "This prints a variable passed arguments"
    print("Output is: ")
    print(arg1)
    for var in vartuple:
       print(var)
    return
# Ahora usted puede llamar a la función printinfo()
printinfo( 10 )
printinfo( 70, 60, 50 )

salida del ejemplo anterior:

Output is:
10
Output is:
70
60
50

Función anónima de Python (función Lambda)

Estas funciones se denominan anónimas porque no se declaran de la manera estándar utilizando la palabra clave def. Puede usar la palabra clave lambda para crear pequeñas funciones anónimas. [Se llaman anónimas porque no tienen nombre propio: todas se llaman lambda].

Las formas Lambda pueden tomar cualquier número de argumentos, pero devuelven solo un valor en forma de expresión. No pueden contener comandos o múltiples expresiones.

Una función anónima no puede ser una llamada directa a imprimir porque lambda requiere una expresión [La sentencia que forman el cuerpo].

Las funciones de Lambda tienen su propio espacio de nombres local y no pueden acceder a variables que no sean las de su lista de parámetros y las del espacio de nombres global.

Aunque parece que las lambdas son una versión de una línea de una función, no son equivalentes a las declaraciones en línea en C o C ++, cuyo propósito es apilar la asignación pasando la función, durante la invocación por razones de rendimiento.

Sintaxis:

lambda [arg1 [,arg2,.....argn]]:expression

Ejemplo:

# Aquí hay una definición de función normal
def square(x):
    return x*x
# Función anónima sqr = lambda x: x*x
#Llamada a la función square()
print("Square of number is",square(10)) #llamada a la función normal
print("Square of number is",sqr(2)) #llamada a la función anónima

salida del ejemplo anterior:

Square of number is 100
Square of number is 4

Alcance de la variable

Es posible que no se pueda acceder a todas las variables de un programa en todas las ubicaciones de ese programa. Esto depende de dónde haya declarado una variable.

El alcance de una variable determina la parte del programa donde puede acceder a un identificador particular. Hay dos ámbitos básicos de variables en Python:

  • Variables globales: Las variables definidas fuera de las funciones se llaman variables globales. Se accede a las variables globales en todo el programa, por lo que las variables globales tienen la mayor accesibilidad.
  • Variables locales: las variables declaradas dentro del cuerpo de una función se conocen como variables locales. Estas tienen un acceso local, por lo que no se puede acceder a estas variables fuera del cuerpo de la función en la que se declaran.

Ejemplo:

x=50
def print_data():
    x=5
    y=10
    print("(x,y):(",x,",",y,")")
print_data() #(x,y):( 5 , 10 )
print("Global x:",x) #x global: 50
print("Local y: ",y) #y es una variable local - throw NameError

salida del ejemplo anterior:

(x,y):( 5 , 10 )
Global x: 50
Traceback(most recent call last):
  File "main.py", line 10, in
    print("Local y: ",y) #y is local variable - throw NameError
NameError: name 'y' is not defined

Entrada y salida de Python

Python proporciona métodos que se pueden usar para leer y escribir datos. Python también proporciona soporte para leer y escribir datos en archivos.

print()

La forma más sencilla de producir resultados es usar la instrucción print donde puede pasar cero o más expresiones separadas por comas. Esta función convierte las expresiones que se le pasan en una cadena y escribe el resultado en la salida estándar de la siguiente manera:

print("Hello ApkZube")
x=150
print(x)

salida del ejemplo anterior:

Hello ApkZube
150

Entrada desde el teclado:

En Python 3, la función raw_input() está en desuso. Además, las funciones input() leen datos del teclado como una cadena, independientemente de si están entre comillas (» o «») o no.

  • input(): la función input([prompt]) es equivalente a raw_input, excepto que supone que la entrada es una expresión de Python válida y le devuelve el resultado evaluado.
def cube(x):
    return x*x*x
a=int(input("Enter number:"))
print("cube of ",a," is ",cube(a))

salida del ejemplo anterior:

Enter number:10
cube of 10 is 1000

Manejo de archivos Python

Python proporciona la facilidad de trabajar en archivos. Un archivo es un almacenamiento externo en el disco duro desde donde se pueden almacenar y recuperar datos.

  • Abrir un archivo: antes de trabajar con archivos, debe abrir el archivo. Para abrir un archivo, se utiliza la función integrada de Python open(). Devuelve un objeto de archivo que se utiliza con otras funciones. Después de abrir el archivo ahora puede realizar operaciones de lectura, escritura, etc. en el archivo.
  • Cerrar un archivo – El método close() de un objeto de archivo elimina cualquier información escrita y cierra el objeto de archivo, después de lo cual ya no se puede escribir nada más. Python cierra automáticamente un archivo cuando el objeto de referencia de un archivo se reasigna a otro archivo. Es una buena práctica usar el método close() para cerrar un archivo.
file_object = open(file_name [, access_mode][, buffering])

Aquí están los detalles de los parámetros:

  • file_name: el argumento file_name es un valor de cadena que contiene el nombre del archivo al que desea acceder.
  • access_mode: el access_mode determina el modo en el que se debe abrir el archivo, es decir, leer, escribir, agregar, etc. A continuación, en la tabla, se proporciona una lista completa de sus posibles valores. Este es un parámetro opcional y el modo de acceso al archivo predeterminado es read (r).
  • buffering: si el valor del buffering se establece en 0, no se realiza el almacenamiento en búfer. Si el valor de buffering es 1, el almacenamiento en línea se realiza al acceder a un archivo. Si especifica valor de buffering a un entero mayor que 1, la acción de almacenamiento en búfer se realiza con el tamaño de búfer indicado. Si el valor del buffering es negativo, el tamaño del búfer es el valor predeterminado del sistema (comportamiento predeterminado).

Operadores de comparación en Python

mododescripción
r          Abre un archivo para solo lectura. El puntero del archivo se coloca al comienzo del archivo. Este es el modo por defecto.
rbAbre un archivo para leer solo en formato binario. El puntero del archivo se coloca al comienzo del archivo. Este es el modo por defecto.
r +      Abre un archivo para leer y escribir. El puntero del archivo colocado al comienzo del archivo.
rb +Abre un archivo para leer y escribir en formato binario. El puntero del archivo colocado al comienzo del archivo.
w        Abre un archivo para escribir solo. Sobrescribe el archivo si el archivo existe. Si el archivo no existe, crea un nuevo archivo para escribir.
wb      Abre un archivo para escribir solo en formato binario. Sobrescribe el archivo si el archivo existe. Si el archivo no existe, crea un nuevo archivo para escribir.
w +     Abre un archivo para escribir y leer. Sobrescribe el archivo existente si el archivo existe. Si el archivo no existe, crea un nuevo archivo para leer y escribir.
wb +   Abre un archivo para escribir y leer en formato binario. Sobrescribe el archivo existente si el archivo existe. Si el archivo no existe, crea un nuevo archivo para leer y escribir.
unAbre un archivo para anexar. El puntero del archivo está al final del archivo si el archivo existe. Es decir, el archivo está en el modo agregar. Si el archivo no existe, crea un nuevo archivo para escribir.
ab       Abre un archivo para agregarlo en formato binario. El puntero del archivo está al final del archivo si el archivo existe. Es decir, el archivo está en el modo agregar. Si el archivo no existe, crea un nuevo archivo para escribir.
a +      Abre un archivo para agregar y leer. El puntero del archivo está al final del archivo si el archivo existe. El archivo se abre en el modo agregar. Si el archivo no existe, crea un nuevo archivo para leer y escribir.
ab +    Abre un archivo para agregar y leer en formato binario. El puntero del archivo está al final del archivo si el archivo existe. El archivo se abre en el modo agregar. Si el archivo no existe, crea un nuevo archivo para leer y escribir.

Atributos del objeto de archivo

  • file.closed: devuelve verdadero si el archivo está cerrado, falso en caso contrario.
  • file.mode: devuelve el modo de acceso con el que se abrió el archivo.
  • file.name: devuelve el nombre del archivo.

Ejemplo:

# Open a file
data = open("data.txt", "wb")
print("Name of the file: ", data.name)
print("Closed or not: ", data.closed)
print("Opening mode: ", data.mode)
data.close()  #archivo data.txt cerrado

salida del ejemplo anterior:

Name of the file: data.txt
Closed or not: False
Opening mode: wb

Leer y escribir archivos

El objeto de archivo proporciona un conjunto de métodos de acceso para hacernos la vida más fácil. Veremos cómo usar los métodos read() y write() para leer y escribir archivos.

  • write(): el método write() escribe cualquier cadena en un archivo abierto. Es importante tener en cuenta que las cadenas de Python pueden tener datos binarios y no solo texto. El método write() no agrega un carácter de nueva línea (‘\ n’) al final de la cadena.
file_object.write(string)

ejemplo:

# Open a file
data = open("data.txt", "w")
data.write("Welcome to ApkZube's Python Tutorial")
print("done")
data.close()

salida del ejemplo anterior:

done
  • read(): el método read() lee una cadena de un archivo abierto. Es importante tener en cuenta que las cadenas de Python pueden tener datos binarios, aparte de los datos de texto.
file_object.read([count])

Aquí, el parámetro pasado es el número de bytes que se leerán del archivo abierto. Este método comienza a leer desde el principio del archivo y si falta el recuento, intenta leer lo más posible, tal vez hasta el final del archivo.

# Open a file
data = open("data.txt", "r+")
file_data = data.read(18) # lee sólo 18 bytes
full_data = data.read() ‘’’lee todos los bytes del archivo, desde el último cursor’’’
print(file_data)
print(full_data)
data.close()

salida del ejemplo anterior:

Welcome to ApkZube
's Python Tutorial

Posiciones de archivo

El método tell() le dice la posición actual dentro del archivo; en otras palabras, la próxima lectura o escritura se producirá en esa cantidad de bytes desde el comienzo del archivo.

El método seek(offset [, from]) cambia la posición actual del archivo. El argumento offset indica el número de bytes que se moverán. El argumento from especifica la posición de referencia desde donde se moverán los bytes.

Si from se establece en 0, el comienzo del archivo se usa como la posición de referencia. Si se establece en 1, la posición actual se usa como la posición de referencia. Si se establece en 2, el final del archivo se tomará como la posición de referencia.

# Open a file
data = open("data.txt", "r+")
file_data = data.read(18) # lee sólo 18 bytes
print("current position after reading 18 byte:",data.tell())
data.seek(0) ‘’’aquí la posición actual se configura a 0 (comienzo del archivo)’’’
full_data = data.read() #lee todos los bytes
print(file_data)
print(full_data)
print("position after reading file: ",data.tell())
data.close()

salida del ejemplo anterior:

current position after reading 18 byte: 18
Welcome to ApkZube
Welcome to ApkZube's Python Tutorial
position after reading file: 36

Renombrar y eliminar archivos

El módulo os de Python proporciona métodos que lo ayudan a realizar operaciones de procesamiento de archivos, como renombrar y eliminar archivos.

Para poder usar este módulo, primero debe importarlo y luego puede llamar a cualquier función relacionada.

  • rename(): el método rename() toma dos argumentos, el nombre de archivo actual y el nuevo nombre de archivo.

sintaxis

os.rename(nombre_actual_archivo, nombre_nuevo_archivo)

import os
os.rename('data.txt','my_data.txt')

salida del ejemplo anterior:

  • remove(): puede usar el método remove() para eliminar archivos al proporcionar el nombre del archivo que se va a eliminar como argumento.

sintaxis:

os.remove(nombre_archivo)

import os
os.remove('my_data.txt')

Se eliminó el archivo my_data.txt

Directorios en Python

Todos los archivos están contenidos en varios directorios, y Python no tiene problemas para manejarlos también. El módulo os tiene varios métodos que lo ayudan a crear, eliminar y cambiar directorios.

  • mkdir(): puede utilizar el método mkdir() del módulo os para crear directorios en el directorio actual. Debe proporcionar un argumento para este método, que contiene el nombre del directorio que se creará.

sintaxis

os.mkdir(«dir_name»)

import os
os.mkdir('apkzube')
  • chdir(): puede usar el método chdir() para cambiar el directorio actual. El método chdir() toma un argumento, que es el nombre del directorio que desea que sea el directorio actual.

sintaxis:

os.chdir(«newdir»)

import os
# Changing a directory to "/home/newdir"
os.chdir("/home/newdir")
  • getcwd(): el método getcwd() muestra el directorio de trabajo actual.
import os
print(os.getcwd())

salida del ejemplo anterior:

/home
  • rmdir(): el método rmdir() elimina el directorio, que se pasa como argumento en el método. Antes de eliminar un directorio, se debe eliminar todo su contenido.
import os
os.rmdir( "/home/apkzube" )
# Ésto debería eliminar el directorio "/home/apkzube".

resultado:

apkzube dir will be removed.

Módulos de Python

Los módulos se utilizan para clasificar el código de Pyhton en partes más pequeñas. Un módulo es simplemente un archivo de Python, donde se definen clases, funciones y variables.

Agrupar códigos similares en un solo archivo facilita el acceso. Eche un vistazo al siguiente ejemplo: si el contenido de un libro no está indexado o categorizado en capítulos individuales, el libro podría volverse aburrido y agitado. Por lo tanto, dividir el libro en capítulos lo hace fácil de entender.

En el mismo sentido, los módulos de Python son los archivos que tienen un código similar. Por lo tanto, el módulo simplifica un código de python donde se definen clases, variables y funciones.

Ventajas

  • Reusabilidad: el módulo se puede usar en algún otro código de Python. Por lo tanto, proporciona la facilidad de reutilización de código.
  • Categorización: atributos de tipo similar se puede colocar en un módulo.

Importar un módulo

Puede usar cualquier archivo fuente de Python como módulo ejecutando una declaración de importación en algún otro archivo fuente de Python. La importación tiene la siguiente sintaxis:

import module1[, module2[,... moduleN]

Ejemplo:
El código de Python para llamar a un módulo por su nombre normalmente reside en un archivo main.py. Aquí hay un ejemplo de un módulo simple.
main.py –

import test
x = test.add(5,10)
print("x=",x)

test.py –

def add(a,b):
    z=a+b
    print('inside add func')
    return z

salida del ejemplo anterior: ejecute main.py

inside add func
x=15

Declaración from… import

La declaración from de Python le permite importar atributos específicos de un módulo al espacio de nombres actual. La declaración from… import tiene la siguiente sintaxis:

from modname import name1[, name2[,... nameN]]

Ejemplo: tenemos fib.py con función fib, ahora veamos cómo podemos usar el módulo fib:

fib.py

# Fibonacci numbers module
def fib(n): # return Fibonacci series up to n
&nbsp;&nbsp; result = []
&nbsp;&nbsp; a, b = 0, 1
&nbsp;&nbsp; while b < n:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; result.append(b)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a, b = b, a + b
&nbsp;&nbsp; return result

main.py

from fib import fib
print(fib(100))

salida del ejemplo anterior:

[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]

Declaración from… import *

También es posible importar todos los nombres de un módulo al espacio de nombres actual utilizando la siguiente instrucción de importación:

from module_name import *

Esto proporciona una manera fácil de importar todos los elementos de un módulo al espacio de nombres actual; sin embargo, esta declaración debe usarse con moderación.

Ejecutando módulos como scripts

Dentro de un módulo, el nombre del módulo(como una cadena) está disponible como el valor de la variable global __name__. El código en el módulo se ejecutará, como si lo hubiera importado, pero con __name__ establecido en » __main__ «.

Agregue este código al final de su módulo

# Fibonacci numbers module
def fib(n): # return Fibonacci series up to n
&nbsp;&nbsp; result = []
&nbsp;&nbsp; a, b = 0, 1
&nbsp;&nbsp; while b < n:
&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;result.append(b)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; a, b = b, a + b
&nbsp;&nbsp; return result
if __name__ == "__main__":
&nbsp;&nbsp; f = fib(100)
&nbsp;&nbsp; print(f)

salida del ejemplo anterior:

[1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]

Módulos integrados en Python:

Hay muchos módulos integrados en Python. Algunos de ellos son los siguientes: math, random, threading, collections, os, mailbox, string, time, tkinter, etc.

  • math() –  Usando el módulo math, puede usar diferentes funciones matemáticas integradas.

Funciones del módulo matemático:

funcióndescripción
ceil(n)Devuelve el siguiente número entero del número dado
sqrt(n)Devuelve la raíz cuadrada del número dado.
exp(n)Devuelve el logaritmo natural e elevado al número dado.
floor(n)Devuelve el número entero anterior del número dado.
log(n, baseto)Devuelve el logaritmo en base baseto del número dado  
pow(baseto, exp)Devuelve a baseto elevado al exponente exp.
sin(n)  Devuelve seno del radián dado.
cos(n)Devuelve el coseno del radián dado.
tan(n) Devuelve la tangente del radián dado.

Ejemplo:

import math
a=4.6
print(math.ceil(a))
print(math.floor(a))
b=9
print(math.sqrt(b))
print(math.exp(3.0))
print(math.log(2.0))
print(math.pow(2.0,3.0))
print(math.sin(0))
print(math.cos(0))
print(math.tan(45))

salida del ejemplo anterior:

5
4
3.0
20.085536923187668
0.6931471805599453
8.0
0.0
1.0
1.6197751905438615
  • Constantes: el módulo matemático proporciona dos constantes para operaciones matemáticas:

math.pi:  Devuelve la constante Pi = 3.14159…

math.e: Devuelve la constante e = 2.71828…

import math
print("math.pi: ",math.pi)
print("math.e: ",math.e)

salida del ejemplo anterior:

math.pi:  3.141592653589793
math.e:  2.718281828459045
  • random: el módulo random se utiliza para generar números aleatorios. Proporciona las siguientes dos funciones integradas:

Operadores de comparación en Python

funcióndescripción
random()Devuelve un número aleatorio entre 0.0 y 1.0 donde 1.0 es exclusivo.
randint(x, y)Devuelve un número aleatorio entre x e y donde ambos números son inclusivos.

Ejemplo:

import random
print(random.random())
print(random.randint(2,8))

salida del ejemplo anterior: da salida aleatoria –

0.6856434575033108
3

Paquetes de Python

Un paquete de Python es una estructura jerárquica de directorios de archivos, que define un entorno único de aplicación de Python, que consta de módulos, sub-paquetes y sub-sub-paquetes, y así sucesivamente.

Pasos para crear e importar paquetes:

  1. Crea un directorio llamado Info.
  2. Coloque diferentes módulos dentro del directorio. Estamos colocando 3 módulos msg1.py, msg2.py y msg3.py, respectivamente, y colocamos el código correspondiente en cada módulo. Coloquemos msg1() en msg1.py, msg2() en msg2.py y msg3() en msg3.py.
  3. Cree un archivo __init__.py que especifique los atributos en cada módulo.
  4. Importe el paquete y use los atributos usando el paquete.

Echa un vistazo al ejemplo:

1) Crear directorio –

import os
os.mkdir("Info")

2) Coloque diferentes módulos en el paquete: (guarde diferentes módulos dentro del paquete Info).

msg1.py

def msg1():
    print("This is msg1" )

msg2.py

def msg2():
    print("This is msg2" )

msg3.py

def msg3():
    print("This is msg3" )

3) crea el archivo __init__.py:

from msg1 import msg1
from msg2 import msg2
from msg3 import msg3

4) main.py

import Info
Info.msg1()
Info.msg2()
Info.msg3()

Al ejecutar main.py, obtenemos el siguiente resultado:

This is msg1
This is msg2
This is msg3

¿Qué es el archivo __init__.py?

__init__.py es simplemente un archivo que se utiliza para considerar los directorios en el disco como el paquete de Python. Básicamente se usa para inicializar los paquetes de Python.

Conceptos de OOP en Python

Python es un lenguaje de programación orientado a objetos. Nos permite desarrollar aplicaciones utilizando el enfoque orientado a objetos. En Python, podemos crear y usar clases y objetos fácilmente.

Aquí hay una pequeña introducción de la Programación Orientada a Objetos (OOP) para ayudarlo:

  • Clase: un prototipo definido por el usuario para un objeto, que define un conjunto de atributos que caracterizan a cualquier objeto de la clase. Los atributos son miembros de datos (variables de clase y variables de instancia) y métodos, a los que se accede mediante la notación de puntos.
  • Objeto: una instancia única de una estructura de datos definida por su clase. Un objeto comprende miembros de datos (variables de clase y variables de instancia) y métodos.
  • Miembro de datos: una variable de clase o variable de instancia que contiene datos asociados con una clase y sus objetos.
  • Variable de clase: una variable que comparten todas las instancias de una clase. Las variables de clase se definen dentro de una clase pero fuera de cualquiera de los métodos de la clase. Las variables de clase no se usan con tanta frecuencia como las variables de instancia.
  • Sobrecarga de funciones: la asignación de más de un comportamiento a una función en particular. La operación realizada varía según los tipos de objetos o argumentos involucrados.
  • Variable de instancia: una variable que se define dentro de un método y pertenece solo a la instancia actual de una clase.
  • Herencia: la transferencia de las características de una clase a otras clases que se derivan de ella.
  • Polimorfismo: el polimorfismo está formado por dos palabras «poli» y «morfos». Poli significa muchos y Morfos significa forma, forma. Define que una tarea se puede realizar de diferentes maneras.
  • Encapsulación: la encapsulación también es una característica de la programación orientada a objetos. Se utiliza para restringir el acceso a métodos y variables. En la encapsulación, el código y los datos se agrupan en una sola unidad para que no se modifiquen por accidente.
  • Abstracción de datos: la abstracción se utiliza para ocultar detalles internos y mostrar sólo las funcionalidades. Abstraer algo significa dar nombres a las cosas, de modo que el nombre capture el núcleo de lo que hace una función o un programa completo.
  • Instancia: un objeto individual de una determinada clase. Un objeto obj que pertenece a una clase Circle, por ejemplo, es una instancia de la clase Circle.
  • Instanciación: la creación de una instancia de una clase.
  • Método: un tipo especial de función que se define en una definición de clase.
  • Sobrecarga operadores: la asignación de más de una función a un operador en particular.

Objetos de Python

Python es un lenguaje de programación orientado a objetos. Por lo tanto, su enfoque principal está en los objetos, a diferencia de los lenguajes de programación orientados a procedimientos, que se enfocan principalmente en funciones.

En los lenguajes de programación orientados a objetos, el objeto es simplemente una colección de datos (variables) y métodos (funciones) que actúan sobre esos datos.

Clases de Python

Una clase es un prototipo o plano del objeto. Vamos a entenderlo con un ejemplo:

Supongamos que una clase es un prototipo de un edificio. Un edificio contiene todos los detalles sobre el piso, puertas, ventanas, etc. Podemos hacer otros edificios en función de estos detalles (todos los que queramos). Entonces un edificio es una clase y podemos crear muchos objetos a partir de una clase.

Un objeto también se denomina instancia de una clase y el proceso de creación de este objeto se conoce como instanciación. Las clases de Python contienen todas las características estándar de la Programación Orientada a Objetos. Una clase de python es una mezcla de los mecanismos de clases de C ++ y Modula-3.

Creando clases

La declaración de clase crea una nueva definición de clase. El nombre de la clase sigue inmediatamente a la palabra clave class, seguida de dos puntos, de la siguiente manera:

class className:
   'Optional class documentation string'
    class_suite
  • La clase tiene una cadena de documentación, a la que se puede acceder a través de ClassName.__ doc__.
  • El class_suite se compone de todos los componentes que definen declaraciones miembros de la clase, atributos de datos y funciones.

Ejemplo:

class Student:
    'Common base class for all students'
    student_count=0
    def __init__(self, name, id):
       self.name = name
       self.id = id
       Student.student_count+=1
    def printStudentData(self):
       print("Name: ", self.name, ", Id: ", self.id)
s=Student("vishal",101)
s.printStudentData()

salida del ejemplo anterior:

1) Name: vishal , Id: 101

Explicación:

  • La variable student_count es una variable de clase cuyo valor se comparte entre todas las instancias de a en esta clase. Se puede acceder a ésta como Student.student_count desde dentro de o desde fuera de la clase.
  • El primer método __init __() es un método especial, que se llama constructor de clases o método de inicialización, que Python llama cuando crea una nueva instancia de esta clase.
  • Usted declara otros métodos de clase, como funciones normales con la excepción de que el primer argumento para cada método es self. Python agrega el argumento self a la lista por usted; no necesita incluirlo cuando llame a los métodos.

Crear objetos de instancia

Para crear instancias de una clase, llame a la clase con el nombre de la clase y pase los argumentos que acepte su método __init__.

Vamos a crear el objeto de la clase Student, del ejemplo anterior:

std=Student('Jignesh','102')

Acceder a los atributos

Accede a los atributos del objeto utilizando el operador de punto con el objeto. Se accederá a la variable de clase [que está en la definición de clase] usando el nombre de la clase de la siguiente manera:

class Student:
   'Common base class for all students'
   student_count=0
   def __init__(self, name, id):
      self.name = name
      self.id = id
      Student.student_count+=1
   def printStudentData(self):
      print("Name: ", self.name, ", Id: ", self.id)
std1=Student("vishal",101)
std2=Student("Jignesh",102)
std3=Student("Ravi",103)
print("Total Student: ",Student.student_count)
std1.printStudentData()
std2.printStudentData()
std3.printStudentData()

salida del ejemplo anterior:

Total Student: 3
Name: vishal , Id: 101
Name: Jignesh , Id: 102
Name: Ravi , Id: 103

En lugar de usar las declaraciones normales para acceder a los atributos, puede usar las siguientes funciones.

  • getattr(obj, name [, default]) – para acceder al atributo name del objeto obj.
  • hasattr(obj, name): para verificar si un atributo existe o no en el objeto obj.
  • setattr(obj, name, value): para establecer un atributo. Si el atributo no existe, entonces se creará.
  • delattr(obj, name): para eliminar un atributo.

Ejemplo:

hasattr(std1, 'id') # Retorna True si el atributo 'id' existe.
getattr(std1, 'id') # Retorna el valor del atributo 'id'.
setattr(std1, 'id', 104) # Configura el atributo 'id' en 104.
delattr(std1, 'id') # Elimina el atributo 'id'.

Atributos de clase incorporados

Cada clase de Python posee los siguientes atributos incorporados, y se puede acceder a ellos utilizando el operador de punto como con cualquier otro atributo:

__dict__:  Diccionario que contiene el espacio de nombres de la clase.

 __doc__:  Cadena de documentación de clase o ninguna, si no está definida.

 __name__:  Nombre de la clase.

 __module__:  Nombre del módulo en el que se define la clase. Este atributo es «__main__» en modo interactivo.

__bases__:  una tupla posiblemente vacía que contiene las clases base, en el orden en que aparecen en la lista de clases base.

Intentemos acceder a todos estos atributos

class Student:
   'Common base class for all students'
   student_count=0
   def __init__(self, name, id):
      self.name = name
      self.id = id
      Student.student_count+=1
   def printStudentData(self):
      print("Name: ", self.name, ", Id: ", self.id)
std1=Student("vishal",101)
std2=Student("Jignesh",102)
std3=Student("Ravi",103)
print("Total Student: ",Student.student_count)
print("Student.__doc__:", Student.__doc__)
print("StudentStudent.__name__:", Student.__name__)
print("Student.__module__:", Student.__module__)
print("Student.__bases__:", Student.__bases__)
print("Student.__dict__:", Student.__dict__ )

salida del ejemplo anterior:

Total Student:  3
Student.__doc__: Common base class for all students
StudentStudent.__name__: Student
Student.__module__: __main__
Student.__bases__:(<class 'object'>,)
Student.__dict__: {'__module__': '__main__', 'student_count': 3, '__dict__': <attribute '__dict__' of 'Student' objects>, 'printStudentData':
<function Student.printStudentData at 0x7f51563f4158>, '__doc__': 'Common base class for all students', '__init__':
<function Student.__init__ at 0x7f51563f40d0>, '__weakref__': <attribute '__weakref__' of 'Student' objects>}

Constructores de Python

Un constructor es un tipo especial de método ( función ) que se utiliza para inicializar los miembros de instancia de la clase. El constructor puede ser parametrizado o no parametrizado. La definición del constructor se ejecuta cuando creamos un objeto de la clase. Los constructores también verifican que haya suficientes recursos para que el objeto realice cualquier tarea de inicio.

Crear un constructor

  1. Un constructor es una función de clase, que comienza con un doble guión bajo (_). El nombre del constructor es siempre el mismo __init __().
  2. Al crear un objeto, un constructor puede aceptar argumentos si es necesario. Cuando creamos una clase sin un constructor, Python crea automáticamente un constructor predeterminado que no hace nada
  3. Cada clase debe tener un constructor, incluso si simplemente se basa en el constructor predeterminado.

Ejemplo:

Creemos una clase llamada ComplexNumber, que tenga dos funciones: __init __(), para inicializar la variable, y getData() para mostrar el número correctamente.

class ComplexNumber:
    def __init__(self,r=0,i=1):
        self.real=r;
        self.imag=i;
    def getData(self):
        print('{0}+{1}j'.format(self.real,self.imag))
c1=ComplexNumber(5,6)
c1.getData()

salida:

5+6j

Constructor parametrizado

El constructor con parámetros se conoce como constructor parametrizado. El constructor parametrizado toma su primer argumento como una referencia a la instancia que se está construyendo, conocida como self, y el programador proporciona el resto de los argumentos.

class Student:
    # Constructor - parameterized
    def __init__(self, name):
        print("This is parametrized constructor")
        self.name = name
    def show(self):
        print("Hello",self.name)
student = Student("vishal")
student.show()

salida:

This is parametrized constructor
Hello vishal

Herencia de Python

En lugar de comenzar desde cero, puede crear una clase, derivándola de una clase preexistente, enumerando la clase primaria, entre paréntesis, después del nombre de la nueva clase.

Sintaxis:

class SubClassName(ParentClass1[, ParentClass2,...]):
    'Optional class documentation string'
    class_suite

ejemplo:

class Parent: # Definición de la clase madre
    parentAttr = 100
    def __init__(self):
       print("Calling parent constructor")
    def parentMethod(self):
       print('Calling parent method')
    def setAttr(self, attr):
       Parent.parentAttr = attr
    def getAttr(self):
       print("Parent attribute:", Parent.parentAttr)
 class Child(Parent): # Definición de la clase hija
    def __init__(self):
       print("Calling child constructor")
    def childMethod(self):
       print('Calling child method')
c = Child() # instancia de clase hija
c.childMethod() # llamado al método de la clase hija
c.parentMethod() # llamado al método de la clase madre
c.setAttr(200) # método de la clase madre nuevamente
c.getAttr() # método de la clase madre

salida del ejemplo anterior:

Calling child constructor
Calling child method
Calling parent method
Parent attribute: 200

De manera similar, puede conducir una clase secundaria desde varias clases principales. Herencia múltiple, que aprenderemos en el próximo tutorial.

Puede usar las funciones issubclass() o isinstance() para verificar las relaciones de dos clases e instancias.

  • La función booleana issubclass(sub, sup) devuelve True, si la subclase sub dada es de hecho una subclase de la superclase sup.
  • La función booleana isinstance(obj, Class) devuelve True, si obj es una instancia de la clase Class o es una instancia de una subclase de Class

Anulación de métodos

Siempre puede anular sus métodos de clase principal. Una razón para anular los métodos de los padres es que es posible que desee una funcionalidad especial o diferente en su subclase.

Ejemplo:

class Parent: # definición de la clase madre
   def myMethod(self):
      print('Calling parent method')
class Child(Parent): # definición de la clase hija
   def myMethod(self):
      print('Calling child method')
c = Child() # instancia de la clase hija
c.myMethod() # La clase hija llama al método anulado

salida del ejemplo anterior:

Calling child method

Métodos anulables de base

La siguiente tabla enumera algunas funciones genéricas que puede anular en sus propias clases:

MétodoDescripción
__init__(self [, args…])          Constructor (con cualquier argumento opcional). Llamada de muestra: obj = className(args)
__del __(self)Destructor, elimina un objeto. Llamada de muestra: del obj
__repr __(self)Representación de cadena evaluable. Ejemplo de llamada: repr(obj)
__str __(self) Representación de cadena imprimible. Muestra de llamada: str(obj)
__cmp__(self, x)       Comparación de objetos. Muestra de llamada: cmp(obj, x)

Sobrecarga de operadores

Supongamos que ha creado una clase Vector para representar vectores bidimensionales. ¿Qué sucede cuando usa el operador más para agregarlos? Lo más probable es que Python te grite.

Sin embargo, podría definir el método __add__ en su clase para realizar la suma de vectores, y luego el operador más se comportará según lo esperado.

Ejemplo:

class Vector:
   def __init__(self, a, b):
      self.a = a
      self.b = b
   def __str__(self):
      return 'Vector(%d, %d)' %(self.a, self.b)
   def __add__(self,other):
      return Vector(self.a + other.a, self.b + other.b)
v1 = Vector(2,10)
v2 = Vector(5,-2)
print(v1 + v2)

salida del ejemplo anterior:

Vector(7,8)

Ocultar datos

Los atributos de un objeto pueden ser visibles o no fuera de la definición de su clase. Debe nombrar los atributos con un prefijo de subrayado doble, y esos atributos no serán directamente visibles para los extraños.

Ejemplo:

class JustCounter:
   __secretCount = 0
   def count(self):
      self.__secretCount += 1
      print(self.__secretCount)
counter = JustCounter()
counter.count()
counter.count()
print(counter.__secretCount)

salida del ejemplo anterior:

Traceback(most recent call last):
   File "test.py", line 12, in
      print counter.__secretCount
AttributeError: JustCounter instance has no attribute '__secretCount'

Python protege a esos miembros cambiando internamente su nombre para incluir el nombre de la clase. Puede acceder a los atributos renombrados como  object._className__attrName. Si reemplaza su última línea de la siguiente manera, entonces funciona para usted:

.........................
print(counter._JustCounter__secretCount)

salida del ejemplo anterior:

1
2
2

Herencia Multinivel de Python

La herencia multinivel también es posible en Python como en otros lenguajes de programación orientados a objetos. Podemos heredar una clase derivada de otra clase derivada, este proceso se conoce como herencia multinivel. En Python, la herencia multinivel se puede hacer a cualquier profundidad.

Ejemplo de herencia multinivel:

class Animal:
    def eat(self):
      print('Eating...')
class Dog(Animal):
   def bark(self):
      print('Barking...')
class BabyDog(Dog):
    def weep(self):
        print('Weeping...')
d=BabyDog()
d.eat()
d.bark()
d.weep()

salida:

Eating...
Barking...
Weeping...

Herencia múltiple de Python

Al igual que en C ++, en Python, una clase puede derivarse de más de una clase base. Esto se llama herencia múltiple. En la herencia múltiple, la clase derivada hereda las características de todas las clases base. La sintaxis para la herencia múltiple es similar a la sintaxis para la herencia única.

Ejemplo:

class ClassA:
    pass
class ClassB:
    pass
class ClassC(ClassA,ClassB):
    pass

veamos un ejemplo:

class First(object):
  def __init__(self):
    super(First, self).__init__()
    print("first")
class Second(object):
  def __init__(self):
    super(Second, self).__init__()
    print("second")
class Third(Second, First):
  def __init__(self):
    super(Third, self).__init__()
    print("third")
Third(); #Llamado al constructor de la tercera clase

salida:

first
second
third

¿Por qué la palabra clave super()?

El método super() se usa más comúnmente con la función __init__ en la clase base. Este suele ser el único lugar donde necesitamos hacer algunas cosas en la clase hija, y luego completar la inicialización en la clase padre.

class Child(Parent):
    def __init__(self, stuff)
        self.stuff = stuff
        super(Child, self).__init__()

Miembros privados de la clase padre

No siempre queremos que las variables de instancia de la clase principal sean heredadas por la clase secundaria, es decir que podemos hacer que algunas de las variables de instancia de la clase primaria sean privadas. Estas no estarán disponibles para la clase secundaria.  Podemos hacer privada a una variable de instancia agregando un doble guión bajo antes de su nombre. Por ejemplo,

#Programa de Python para demostrar los miembros privados de la clase base
class C(object):
    def __init__(self):
            self.c = 21
            self.__d = 42
            # d es una variable privada de la instancia
           
class D(C):
    def __init__(self):
            self.e = 84
            C.__init__(self)
object1 = D()
print(D.d)
# produce un error porque d es una variable privada de la instancia

salida del ejemplo anterior:

Traceback(most recent call last):
&nbsp; File "main.py", line 16, in <module>
&nbsp; print(D.d)
AttributeError: type object 'D' has no attribute 'd'

Polimorfismo de Python

Polimorfismo se basa en las palabras griegas Poli (muchos) y morfismo (formas). Crearemos una estructura que pueda tomar o usar muchas formas de objetos. Ejemplos de funciones polimórficas incorporadas:

print(len("geeks"))  #len() siendo usada para una cadena
print(len([10, 20, 30]))  #len() siendo usada para una lista

salida del ejemplo anterior:

5
3

Sobrecarga de Métodos

Python no admite la sobrecarga de métodos. Podemos sobrecargar los métodos, pero solo podemos usar el último método definido.

#Primer método producto.
def product(a, b):
  ‘Toma dos argumentos e imprime su producto’
  p = a * b
  print(p)
#Segundo método producto
def product(a, b, c):
  ‘Toma tres argumentos e imprime su producto’
  p = a * b * c
  print(p)

salida del ejemplo anterior:

100

Anulación de métodos

Siempre puede anular sus métodos de clase principal. Una razón para anular los métodos de los padres es que es posible que desee una funcionalidad especial o diferente en su subclase.
Ejemplo:

class Parent: # Definición de la clase base
  def myMethod(self):
    print('Calling parent method')
class Child(Parent): # Definición de la clase derivada
  def myMethod(self):
    print('Calling child method')
c = Child() # Instancia de la clase derivada
c.myMethod() # La clase hija llama al método anulado

salida del ejemplo anterior:

Calling child method

Manejo de Excepciones

Una excepción es un evento que ocurre durante la ejecución de un programa, que interrumpe el flujo normal de las instrucciones del programa. En general, cuando un script de Python se encuentra con una situación a la que no puede hacer frente, genera una excepción. Una excepción es un objeto de Python, que representa un error.

Cuando un script de Python genera una excepción, debe manejar la excepción de inmediato, de lo contrario, el script finaliza y se cierra.

Manejando una excepción

Si tiene algún código sospechoso, que puede generar una excepción, puede defender su programa colocando el código sospechoso en un bloque try:. Después del bloque try:, incluya una declaración except:, seguida de un bloque de código que maneje el problema de la manera más elegante posible.

try:
   Usted hace sus operaciones aquí
   ......................
except ExceptionI:
   Si ocurre la Excepción I, entonces ejecute este bloque.
except ExceptionII:
   Si ocurre la Excepción II, entonces ejecute este bloque.
   ......................
else:
   Si no ocurre ninguna Excepción, entonces ejecute este bloque.

Con nuestro programa «¡Hola, mundo!» escrito, estamos listos para ejecutar el programa. Usaremos el comando python3 junto con el nombre de nuestro archivo de programa. Ejecutemos el programa:

  • Una sola declaración try puede tener múltiples declaraciones except. Esto es útil cuando el bloque try contiene sentencias que pueden arrojar diferentes tipos de excepciones.
  • También puede proporcionar una cláusula except genérica, que maneje cualquier excepción.
  • Después de la(s) cláusula(s) except, puede incluir una cláusula else. El código del bloque else se ejecuta si el código del bloque try: no genera ninguna excepción.
  • El bloque else es un buen lugar para el código que no necesita probar: la protección del bloque.

Ejemplo:

try:
   fh = open("testfile", "w")
   fh.write("This is my test file for exception handling!!")
except IOError:
   print("Error: can\'t find file or read data")
else:
   print("Written content in the file successfully")
   fh.close()

salida del ejemplo anterior:

Written content in the file successfully

La cláusula except sin excepciones

También puede usar la declaración except sin excepciones definidas, de la siguiente manera

try:
   Usted hace sus operaciones aquí
   ......................
except: #No hay una excepción definida
   Si ocurre cualquier Excepción, entonces ejecute este bloque.
   ......................
else:
   Si no ocurre ninguna Excepción, entonces ejecute este bloque.

Este tipo de declaración try-except captura todas las excepciones que ocurren. Sin embargo, el uso de este tipo de declaración try-except no se considera una buena práctica de programación, ya que captura todas las excepciones pero no hace que el programador identifique la causa raíz del problema que puede ocurrir.

La cláusula except con múltiples excepciones

También puede usar una sola declaración except para manejar múltiples excepciones, de la siguiente manera:

try:
   Usted hace sus operaciones aquí
   ......................
except(Exception1[, Exception2[,...ExceptionN]]):
   Si ocurre cualquiera de las excepciones de la lista dada, entonces ejecute este bloque.
   ......................
else:
   Si no ocurre ninguna excepción, entonces ejecute este bloque.

La cláusula try-finally

Puede usar un bloque finally: junto con un bloque try:. El bloque finally: es un lugar para colocar cualquier código que deba ejecutarse, ya sea que el bloque try haya generado una excepción o no. La sintaxis de la declaración try-finally es esta:

try:
   Usted hace sus operaciones aquí;
    ......................
   Debido a cualquier excepción, ésto podría ser salteado.
finally:
   Ésto debe ser ejecutado siempre.
   ......................

Nota: puede proporcionar la(s) cláusula(s) except o una cláusula finally, pero no ambas. Tampoco puede usar la cláusula else junto con una cláusula finally.

Ejemplo:

try:
   fh = open("testfile", "w")
   fh.write("This is my test file for exception handling!!")
finally:
   print("Error: can\'t find file or read data")
   fh.close()

Si no tiene permiso para abrir el archivo en modo de escritura, esto producirá el siguiente resultado:

Error: can't find file or read data

Argumento de una excepción

Una excepción puede tener un argumento, que es un valor que proporciona información adicional sobre el problema. El contenido del argumento varía según la excepción. Captura el argumento de una excepción al proporcionar una variable en la cláusula except, de la siguiente manera:

Ejemplo:

# Definición de una función aquí.
def temp_convert(var):
   try:
      return int(var)
   except ValueError as Argument:
      print("The argument does not contain numbers\n", Argument)
# Llamada a la función de arriba aquí.
temp_convert("xyz")

salida del ejemplo anterior:

The argument does not contain numbers
invalid literal for int() with base 10: 'xyz'

Generar una excepción

Puede generar excepciones de varias maneras, utilizando la declaración raise. La sintaxis general para la declaración raise es la siguiente:

raise [Exception [, args [, traceback]]]

Aquí, Exception es el tipo de excepción (por ejemplo, NameError ) y args es un valor para el argumento de la excepción. El argumento es opcional; si no se proporciona, el argumento de la excepción será Ninguno.

El argumento final, traceback (rastreo), también es opcional (y rara vez se usa en la práctica), y si está presente, es el objeto de rastreo usado para la excepción.

Ejemplo:

def functionName(level):
&nbsp;&nbsp; if level < 1:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; raise Exception(level)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ‘’’El código de arriba podría no ser ejecutado si generamos la excepción’’’
&nbsp;&nbsp; return level
try:
&nbsp;&nbsp; l = functionName(-10)
&nbsp;&nbsp; print("level = ",l)
except Exception as e:
&nbsp;&nbsp; print("error in level argument",e.args[0])

salida del ejemplo anterior:

error in level argument -10

Escribiendo el Programa «¡Hola, mundo!»

Python también le permite crear sus propias excepciones derivando clases de las excepciones integradas estándar.

Aquí hay un ejemplo relacionado con RuntimeError. Aquí, se crea una clase que se subclasifica de RuntimeError. Esto es útil cuando necesita mostrar información más específica cuando se detecta una excepción.

La excepción definida por el usuario se genera en el bloque try, y se atrapa en el bloque except. La variable e se usa para crear una instancia de la clase Networkerror.

class Networkerror(RuntimeError):
    def __init__(self, arg):
       self.args = arg

Entonces, una vez que haya definido la clase anterior, puede generar la excepción de la siguiente manera:

try:
   raise Networkerror("Bad hostname")
except Networkerror,e:
   print(e.args)