Las palabras clave son las palabras reservadas en Python. No podemos utilizar una palabra clave como nombre de variable, nombre de función o cualquier otro identificador.
Aquí tienes una lista de todas las palabras clave en la programación de Python
False | await | else | import | pass |
Nada | romper | excepto | en | subir |
Verdadero | clase | finalmente | es | retorno |
y | continuar | para | lambda | intentar |
como | def | de | no local | mientras |
assert | del | global | not | with |
async | elif | if | or | yield |
Las palabras clave anteriores pueden modificarse en diferentes versiones de Python. Algunas pueden ser añadidas o eliminadas. Siempre puede obtener la lista de palabras clave en su versión actual escribiendo lo siguiente en el prompt.
>>> import keyword>>> print(keyword.kwlist)
Descripción de palabras clave en Python con ejemplos
Verdadero, Falso
True
y False
son valores de verdad en Python. Son los resultados de las operaciones de comparación o de las operaciones lógicas (booleanas) en Python. Por ejemplo:
>>> 1 == 1True>>> 5 > 3True>>> True or FalseTrue>>> 10 <= 1False>>> 3 > 7False>>> True and FalseFalse
Aquí podemos ver que las tres primeras afirmaciones son verdaderas por lo que el intérprete devuelve True
y devuelve False
para las tres afirmaciones restantes. True
y False
en python es lo mismo que 1
y 0
. Esto se puede justificar con el siguiente ejemplo:
>>> True == 1True>>> False == 0True>>> True + True2
None
None
es una constante especial en Python que representa la ausencia de un valor o un valor nulo.
Es un objeto de su propio tipo de datos, el NoneType
. No podemos crear varios objetos None
pero podemos asignarlo a variables. Estas variables serán iguales entre sí.
Hay que tener especial cuidado en que None
no implique False
, 0
o cualquier lista vacía, diccionario, cadena, etc. Por ejemplo:
>>> None == 0False>>> None == False>>> None == FalseFalse>>> x = None>>> y = None>>> x == yTrue
Las funciones vacías que no devuelven nada devolverán un objeto None
automáticamente. None
también es devuelto por funciones en las que el flujo del programa no encuentra una sentencia de retorno. Por ejemplo:
def a_void_function(): a = 1 b = 2 c = a + bx = a_void_function()print(x)
Salida
None
Este programa tiene una función que no devuelve ningún valor, aunque hace algunas operaciones en su interior. Así que cuando imprimimos x, obtenemos None
que se devuelve automáticamente (implícitamente). Del mismo modo, aquí tenemos otro ejemplo:
def improper_return_function(a): if (a % 2) == 0: return Truex = improper_return_function(3)print(x)
Salida
None
Aunque esta función tiene una sentencia return
, no se alcanza en todos los casos. La función devolverá True
sólo cuando la entrada sea par.
Si damos a la función un número impar, se devuelve None
implícitamente.
y, o , no
and
, or
, not
son los operadores lógicos en Python. and
resultará en True
sólo si ambos operandos son True
. La tabla de verdad para and
se da a continuación:
A | B | A y B |
---|---|---|
Verdadero | Verdadero | Verdadero |
Verdadero | Falso | Falso |
Falso | Verdad | Falso |
Falso | Falso | Falso |
or
resultará en True
si alguno de los operandos es True
. La tabla de verdad para or
se da a continuación:
A | B | A o B |
---|---|---|
Verdadero | Verdadero | Verdadero |
Verdadero | Falso | Verdad |
Falso | Verdad | Verdad |
Falso | Falso | Falso |
not
operador se utiliza para invertir el valor de verdad. La tabla de verdad para not
se da a continuación:
A | no A |
---|---|
Verdadero | Falso |
Falso | True |
algunos ejemplos de su uso se dan a continuación
>>> True and FalseFalse>>> True or FalseTrue>>> not FalseTrue
as
as
se utiliza para crear un alias al importar un módulo. Significa dar un nombre diferente (definido por el usuario) a un módulo mientras se importa.
Como por ejemplo, Python tiene un módulo estándar llamado math
. Supongamos que queremos calcular cuál es el coseno de pi utilizando un alias. Podemos hacerlo de la siguiente manera usando as
:
>>> import math as myAlias>>>myAlias.cos(myAlias.pi)-1.0
Aquí importamos el módulo math
dándole el nombre myAlias
. Ahora podemos referirnos al módulo math
con este nombre. Usando este nombre hemos calculado el cos(pi) y hemos obtenido -1.0
como respuesta.
assert
assert
se utiliza con fines de depuración.
Mientras programamos, a veces deseamos conocer el estado interno o comprobar si nuestras suposiciones son ciertas. assert
nos ayuda a hacer esto y a encontrar errores más convenientemente. assert
va seguido de una condición.
Si la condición es verdadera, no pasa nada. Pero si la condición es falsa, se levanta AssertionError
. Por ejemplo:
>>> a = 4>>> assert a < 5>>> assert a > 5Traceback (most recent call last): File "<string>", line 301, in runcode File "<interactive input>", line 1, in <module>AssertionError
Para nuestra mejor comprensión, también podemos proporcionar un mensaje que se imprima con el AssertionError
.
>>> a = 4>>> assert a > 5, "The value of a is too small"Traceback (most recent call last): File "<string>", line 301, in runcode File "<interactive input>", line 1, in <module>AssertionError: The value of a is too small
En este punto podemos notar que,
assert condition, message
es equivalente a,
if not condition: raise AssertionError(message)
async, await
Las palabras clave async
y await
son proporcionadas por la biblioteca asyncio
de Python. Se utilizan para escribir código concurrente en Python. Por ejemplo,
import asyncioasync def main(): print('Hello') await asyncio.sleep(1) print('world')
Para ejecutar el programa, utilizamos
asyncio.run(main())
En el programa anterior, la palabra clave async
especifica que la función se ejecutará de forma asíncrona.
Aquí, primero se imprime Hola. La palabra clave await
hace que el programa espere 1 segundo. Y luego se imprime el mundo.
break, continue
break
y continue
se utilizan dentro de los bucles for
y while
para alterar su comportamiento normal.
break
terminará el bucle más pequeño en el que se encuentre y el control fluye a la sentencia inmediatamente inferior al bucle. continue
hace que termine la iteración actual del bucle, pero no todo el bucle.
Esto se puede ilustrar con los dos ejemplos siguientes:
for i in range(1,11): if i == 5: break print(i)
Salida
1234
Aquí, el bucle for
pretende imprimir números del 1 al 10. Pero la condición if
se cumple cuando i es igual a 5 y rompemos el bucle. Así, sólo se imprime el rango del 1 al 4.
for i in range(1,11): if i == 5: continue print(i)
Salida
1234678910
Aquí utilizamos continue
para el mismo programa. Así, cuando se cumple la condición, se salta esa iteración. Pero no salimos del bucle. Por lo tanto, se imprimen todos los valores excepto el 5.
Aprende más sobre la sentencia break y continue de Python.
class
class
se utiliza para definir una nueva clase definida por el usuario en Python.
La clase es una colección de atributos y métodos relacionados que tratan de representar una situación del mundo real. Esta idea de juntar datos y funciones en una clase es fundamental para el concepto de programación orientada a objetos (POO).
Las clases se pueden definir en cualquier parte de un programa. Pero es una buena práctica definir una sola clase en un módulo. A continuación se muestra un ejemplo de uso:
class ExampleClass: def function1(parameters): … def function2(parameters): …
Aprende más sobre los objetos y las clases de Python.
def
def
se utiliza para definir una función definida por el usuario.
La función es un bloque de sentencias relacionadas, que juntas realizan alguna tarea específica. Nos ayuda a organizar el código en trozos manejables y también para hacer alguna tarea repetitiva.
El uso de def
se muestra a continuación:
def function_name(parameters): …
Aprende más sobre las funciones de Python.
del
del
se utiliza para eliminar la referencia a un objeto. Todo es objeto en Python. Podemos borrar una referencia a una variable usando del
>>> a = b = 5>>> del a>>> aTraceback (most recent call last): File "<string>", line 301, in runcode File "<interactive input>", line 1, in <module>NameError: name 'a' is not defined>>> b5
Aquí podemos ver que la referencia de la variable a fue borrada. Por lo tanto, ya no está definida. Pero b sigue existiendo.
del
También se utiliza para eliminar elementos de una lista o de un diccionario:
>>> a = >>> del a>>> a
if, else, elif
if, else, elif
se utilizan para la ramificación condicional o la toma de decisiones.
Cuando queremos probar alguna condición y ejecutar un bloque sólo si la condición es verdadera, entonces utilizamos if
y elif
. elif
es la abreviatura de else if. else
es el bloque que se ejecuta si la condición es falsa. Esto quedará claro con el siguiente ejemplo:
def if_example(a): if a == 1: print('One') elif a == 2: print('Two') else: print('Something else')if_example(2)if_example(4)if_example(1)
Salida
TwoSomething elseOne
Aquí, la función comprueba el número de entrada e imprime el resultado si es 1 o 2. Cualquier entrada que no sea ésta hará que se ejecute la parte else
del código.
Aprende más sobre la declaración if y if…else de Python.
except, raise, try
except, raise, try
se utilizan con las excepciones en Python.
Las excepciones son básicamente errores que sugieren que algo ha ido mal durante la ejecución de nuestro programa. IOError
, ValueError
, ZeroDivisionError
, ImportError
, NameError
, TypeError
etc. son algunos ejemplos de excepción en Python. Los bloques try...except
se utilizan para atrapar excepciones en Python.
Podemos lanzar una excepción explícitamente con la palabra clave raise
. A continuación se muestra un ejemplo:
def reciprocal(num): try: r = 1/num except: print('Exception caught') return return rprint(reciprocal(10))print(reciprocal(0))
Salida
0.1Exception caughtNone
Aquí, la función reciprocal()
devuelve el recíproco del número de entrada.
Cuando introducimos 10, obtenemos la salida normal de 0,1. Pero cuando introducimos 0, se levanta automáticamente un ZeroDivisionError
.
Esto lo capta nuestro bloque try…except
y devolvemos None
. También podríamos haber levantado el ZeroDivisionError
explícitamente comprobando la entrada y manejarlo en otra parte de la siguiente manera:
if num == 0: raise ZeroDivisionError('cannot divide')
finalmente
finally
se utiliza con el bloque try…except
para cerrar recursos o flujos de archivos.
Usar finally
asegura que el bloque de código dentro de él se ejecuta incluso si hay una excepción no manejada. Por ejemplo:
try: Try-blockexcept exception1: Exception1-blockexcept exception2: Exception2-blockelse: Else-blockfinally: Finally-block
Aquí si hay una excepción en el bloque Try-block
, se maneja en el bloque except
o else
. Pero no importa en qué orden fluya la ejecución, podemos estar seguros de que el Finally-block
se ejecuta aunque haya un error. Esto es útil para limpiar los recursos.
Aprende más sobre el manejo de excepciones en la programación en Python.
for
for
se utiliza para hacer bucles. Generalmente usamos for
cuando sabemos el número de veces que queremos hacer un bucle.
En Python podemos usarlo con cualquier tipo de secuencias como una lista o una cadena. Aquí hay un ejemplo en el que for
se utiliza para recorrer una lista de nombres:
names = for i in names: print('Hello '+i)
Salida
Hello JohnHello MonicaHello StevenHello Robin
Aprende más sobre el bucle for de Python.
De, import
import
palabra clave se utiliza para importar módulos en el espacio de nombres actual. from…import
se utiliza para importar atributos o funciones específicas en el espacio de nombres actual. Por ejemplo:
import math
importará el módulo math
. Ahora podemos usar la función cos()
dentro de él como math.cos()
. Pero si quisiéramos importar sólo la función cos()
, esto se puede hacer usando from
as
from math import cos
ahora podemos usar la función simplemente como cos()
, sin necesidad de escribir math.cos()
.
Aprende más sobre los módulos de Python y la sentencia import.
global
global
se utiliza para declarar que una variable dentro de la función es global (fuera de la función).
Si necesitamos leer el valor de una variable global, no es necesario definirla como global
. Se entiende.
Si necesitamos modificar el valor de una variable global dentro de una función, entonces debemos declararla con global
. De lo contrario, se crea una variable local con ese nombre.
El siguiente ejemplo nos ayudará a aclarar esto.
globvar = 10def read1(): print(globvar)def write1(): global globvar globvar = 5def write2(): globvar = 15read1()write1()read1()write2()read1()
Salida
1055
Aquí, la función read1()
sólo está leyendo el valor de globvar
. Por lo tanto, no necesitamos declararla como global
. Pero la función write1()
está modificando el valor, por lo que necesitamos declarar la variable como global
.
Podemos ver en nuestra salida que la modificación tuvo lugar (10 se cambia a 5). El write2()
también intenta modificar este valor. Pero no lo hemos declarado como global
.
Por lo tanto, se crea una nueva variable local globvar
que no es visible fuera de esta función. Aunque modifiquemos esta variable local a 15, la variable global permanece inalterada. Esto es claramente visible en nuestra salida.
en
in
se utiliza para comprobar si una secuencia (lista, tupla, cadena, etc.) contiene un valor. Devuelve True
si el valor está presente, de lo contrario devuelve False
. Por ejemplo:
>>> a = >>> 5 in aTrue>>> 10 in aFalse
El uso secundario de in
es recorrer una secuencia en un bucle for
.
for i in 'hello': print(i)
Output
hello
is
is
se utiliza en Python para comprobar la identidad de los objetos. Mientras que el operador ==
se utiliza para probar si dos variables son iguales o no, is
se utiliza para probar si las dos variables se refieren al mismo objeto.
Devuelve True
si los objetos son idénticos y False
si no.
>>> True is TrueTrue>>> False is FalseTrue>>> None is NoneTrue
Sabemos que sólo hay una instancia de True
, False
y None
en Python, por lo que son idénticos.
>>> == True>>> is False>>> {} == {}True>>> {} is {}False
Una lista o diccionario vacío es igual a otro vacío. Pero no son objetos idénticos ya que se encuentran por separado en la memoria. Esto se debe a que la lista y el diccionario son mutables (el valor puede ser cambiado).
>>> '' == ''True>>> '' is ''True>>> () == ()True>>> () is ()True
A diferencia de la lista y el diccionario, la cadena y la tupla son inmutables (el valor no puede ser alterado una vez definido). Por lo tanto, dos cadenas o tuplas iguales también son idénticas. Se refieren a la misma ubicación de memoria.
lambda
lambda
se utiliza para crear una función anónima (función sin nombre). Es una función inline que no contiene una sentencia return
. Consiste en una expresión que se evalúa y devuelve. Por ejemplo:
a = lambda x: x*2for i in range(1,6): print(a(i))
Salida
246810
Aquí hemos creado una función inline que duplica el valor, utilizando la sentencia lambda
. Usamos esto para duplicar los valores en una lista que contiene de 1 a 5.
Aprende más sobre la función lamda de Python.
nonlocal
El uso de la palabra clave nonlocal
es muy similar a la palabra clave global
. nonlocal
se utiliza para declarar que una variable dentro de una función anidada (función dentro de una función) no es local para ella, lo que significa que se encuentra en la función exterior que la incluye. Si necesitamos modificar el valor de una variable no local dentro de una función anidada, entonces debemos declararla con nonlocal
. De lo contrario, se crea una variable local con ese nombre dentro de la función anidada. El siguiente ejemplo nos ayudará a aclarar esto.
def outer_function(): a = 5 def inner_function(): nonlocal a a = 10 print("Inner function: ",a) inner_function() print("Outer function: ",a)outer_function()
Salida
Inner function: 10Outer function: 10
Aquí, la inner_function()
está anidada dentro de la outer_function
.
La variable a está en la outer_function()
. Por lo tanto, si queremos modificarla en el inner_function()
, debemos declararla como nonlocal
. Observa que a no es una variable global.
Por lo tanto, vemos en la salida que la variable fue modificada con éxito dentro del inner_function()
anidado. El resultado de no utilizar la palabra clave nonlocal
es el siguiente:
def outer_function(): a = 5 def inner_function(): a = 10 print("Inner function: ",a) inner_function() print("Outer function: ",a)outer_function()
Salida
Inner function: 10Outer function: 5
Aquí, no declaramos que la variable a dentro de la función anidada es nonlocal
. Por lo tanto, se crea una nueva variable local con el mismo nombre, pero la a no local no se modifica como se ve en nuestra salida.
pass
pass
es una sentencia nula en Python. No ocurre nada cuando se ejecuta. Se utiliza como marcador de posición.
Supongamos que tenemos una función que aún no está implementada, pero queremos implementarla en el futuro. Simplemente escribiendo,
def function(args):
en medio de un programa nos dará IndentationError
. En lugar de esto, construimos un cuerpo vacío con la sentencia pass
.
def function(args): pass
También podemos hacer lo mismo en un class
vacío.
class example: pass
La sentenciareturn
return
se utiliza dentro de una función para salir de ella y devolver un valor.
Si no devolvemos un valor explícitamente, None
se devuelve automáticamente. Esto se comprueba con el siguiente ejemplo.
def func_return(): a = 10 return adef no_return(): a = 10print(func_return())print(no_return())
Salida
10None
mientras
while
se utiliza para hacer bucles en Python.
Las sentencias dentro de un bucle while
continúan ejecutándose hasta que la condición del bucle while
se evalúa a False
o se encuentra una sentencia break
. El siguiente programa ilustra esto.
i = 5while(i): print(i) i = i – 1
Salida
54321
Nota que 0 es igual a False
.
Aprende más sobre el bucle while de Python.
con
with
sentencia se utiliza para envolver la ejecución de un bloque de código dentro de los métodos definidos por el gestor de contexto.
El gestor de contexto es una clase que implementa métodos __enter__
y __exit__
. El uso de la sentencia with
asegura que el método __exit__
sea llamado al final del bloque anidado. Este concepto es similar al uso del bloque try…finally
. Aquí, es un ejemplo.
with open('example.txt', 'w') as my_file: my_file.write('Hello world!')
Este ejemplo escribe el texto Hello world!
en el archivo example.txt
. Los objetos archivo tienen definidos los métodos __enter__
y __exit__
dentro de ellos, por lo que actúan como su propio gestor de contexto.
Primero se llama al método __enter__
, luego se ejecuta el código dentro de la sentencia with
y finalmente se llama al método __exit__
. El método __exit__
se llama incluso si hay un error. Básicamente cierra el flujo del archivo.
yield
yield
se utiliza dentro de una función como una sentencia return
. Pero yield
devuelve un generador.
El generador es un iterador que genera un elemento cada vez. Una lista grande de valores ocupará mucha memoria. Los generadores son útiles en esta situación ya que genera sólo un valor a la vez en lugar de almacenar todos los valores en la memoria. Por ejemplo,
>>> g = (2**x for x in range(100))
creará un generador g que genera potencias de 2 hasta el número dos elevado a la potencia 99. Podemos generar los números utilizando la función next()
como se muestra a continuación.
>>> next(g)1>>> next(g)2>>> next(g)4>>> next(g)8>>> next(g)16
Y así sucesivamente… Este tipo de generador es devuelto por la sentencia yield
de una función. Aquí hay un ejemplo.
def generator(): for i in range(6): yield i*ig = generator()for i in g: print(i)
Salida