Palabras Reservadas de Python
Palabras Reservadas de Python
Introduccin
Se trata de una pequea gua con el objetivo de dar a conocer las palabras
reservadas o keywords de Python, aquellos nombres que incorpora el lenguaje los
cuales no pueden ser reemplazados por un valor determinado (funciones, clases,
variables) o alterar su funcionamiento.
En Python 3 las palabras exec y print han sido removidas, ya que ahora se
presentan como funciones incorporadas por defecto. Por el contrario, se han
aadido los trminos nonlocal, True, False y None. Los ltimos tres ya se
encontraban en versiones anteriores a la 3.x, aunque como variables con valores
predefinidos (a excepcin de None). Veamos algunos ejemplos.
Python 2
1. >>> False = 1
2. >>> True = 0
3. >>> print = 0
4. File "<stdin>", line 1
5. print = 0
6. ^
7. SyntaxError: invalid syntax
8. >>> exec = 0
9. File "<stdin>", line 1
10. exec = 0
11. ^
12. SyntaxError: invalid syntax
13. >>> None = 0
14. File "<stdin>", line 1
15. SyntaxError: cannot assign to None
Python 3
1. >>> False = 1
2. File "<stdin>", line 1
3. SyntaxError: can't assign to keyword
4. >>> True = 0
5. File "<stdin>", line 1
6. SyntaxError: can't assign to keyword
7. >>> print = 0
8. >>> exec = 0
9. >>> None = 0
10. File "<stdin>", line 1
11. SyntaxError: can't assign to keyword
El mdulo keyword
El archivo keyword.py se distribuye junto con la librera estndar de Python. Es
generado automticamente a partir del archivo graminit.c, perteneciente al
cdigo de fuente del intrprete. Incorpora una lista que contiene el conjunto de
palabras resevadas, y una simple funcin que determina la existencia de
un keyword a partir de una cadena.
1. # Python 2.7
2. >>> from keyword import iskeyword, kwlist
3. >>> kwlist
4. ['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from',
'global', 'if', 'import', 'in','is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
5. >>> iskeyword("pass")
6. True
7. >>> iskeyword("None")
8. False
9. >>> iskeyword("print")
10. True
Documentacin
La funcin help puede recibir como argumento el nombre de una palabra
reservada como una cadena.
>>> help("assert")
and / or
as
assert
1. >>> assert 1 == 2
2. Traceback (most recent call last):
3. File "<stdin>", line 1, in <module>
4. AssertionError
5. >>> assert 1 == 1
Ntese que no es posible asignar un valor a __debug__, ste ser False al llamar a
un archivo con las opciones del intrprete -o y -oo.
break
class
1. >>> class C:
2. ... def __init__(self):
3. ... print("Hello world!")
4. ...
5. >>> c = C()
6. Hello world!
continue
del
1. >>> a = 1
2. >>> a
3. 1
4. >>> del a
5. >>> a
6. Traceback (most recent call last):
7. File "<stdin>", line 1, in <module>
8. NameError: name 'a' is not defined
exec
from
Permite modificar el valor de un objeto global desde un mbito con menor alcance
(una funcin, por ejemplo).
1. >>> a = 1
2. >>> def f():
3. ... global a
4. ... a = 2
5. ...
6. >>> f()
7. >>> a
8. 2
El valor del objeto a no habra sido modficiado sin utilizar global; en su lugar, se
habra creado otro objeto dentro de la funcin f.
1. >>> a = 1
2. >>> def f():
3. ... a = 2
4. ...
5. >>> f()
6. >>> a
7. 1
if / elif / else
1. if a:
2. # bool(a) es True
3. print("a")
4. elif b:
5. # bool(a) es False
6. # bool(b) es True
7. print("b")
8. elif c:
9. # bool(a) es False
10. # bool(b) es False
11. # bool(c) es True
12. print("c")
13. else:
14. # Todas las anteriores son falsas.
15. print("Ninguna de las anteriores.")
import
in
1. >>> 2 in (1, 2, 3)
2. True
3. >>> "Hello" in "Hello, world!"
4. True
5. >>> "Si" in {"Yes": 1, "No": 2}
6. False
is
1. >>> a = None
2. >>> a is None
3. True
lambda
pass
return
1. >>> True == 1
2. True
3. >>> False == 0
4. True
1. try:
2. func()
3. except Exception:
4. print("Ha ocurrido un error.")
1. try:
2. func()
3. except Exception:
4. print("Ha ocurrido un error.")
5. else:
6. print("Ejecutado exitosamente.")
Por ltimo, el flujo ser enviado luego del trmino finally al finalizar la ejecucin
del cdigo anterior, independientemente si han surgido errores.
1. try:
2. func()
3. except Exception:
4. print("Ha ocurrido un error.")
5. else:
6. print("Ejecutado exitosamente.")
7. finally:
8. cleanup()
En caso de ocurrir un error en las clusulas except o else, cleanup() ser llamada
antes de propagarse la excepcin, para permitir realizar una limpieza, principal
diferencia con el siguiente cdigo.
1. try:
2. func()
3. except Exception:
4. print("Ha ocurrido un error.")
5. else:
6. print("Ejecutado exitosamente.")
7.
8. cleanup()
while
1. >>> i = 0
2. >>> while i < 10:
3. ... print(i)
4. ... i = i + 1
5. ...
6. 0
7. 1
8. 2
9. 3
10. 4
11. 5
12. 6
13. 7
14. 8
15. 9
with
1. with open("info.txt"):
2. raise Exception
with open("info.txt") as f:
1. try:
2. f = open("info.txt")
3. raise Exception
4. f.close()
5. except Exception:
6. print f.closed # False
yield