Professional Documents
Culture Documents
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 las versiones 2.x el lenguaje cuenta con 31 palabras reservadas:
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
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
>>> False = 1
>>> True = 0
>>> print = 0
File "<stdin>", line 1
print = 0
^
SyntaxError: invalid syntax
>>> exec = 0
File "<stdin>", line 1
exec = 0
^
SyntaxError: invalid syntax
>>> None = 0
File "<stdin>", line 1
SyntaxError: cannot assign to None
>>> False = 1
>>> True = 0
>>> print = 0
File "<stdin>", line 1
print = 0
^
SyntaxError: invalid syntax
>>> exec = 0
File "<stdin>", line 1
exec = 0
^
SyntaxError: invalid syntax
>>> None = 0
File "<stdin>", line 1
SyntaxError: cannot assign to None
>>> False = 1
>>> True = 0
>>> print = 0
File "<stdin>", line 1
print = 0
^
SyntaxError: invalid syntax
>>> exec = 0
File "<stdin>", line 1
exec = 0
^
SyntaxError: invalid syntax
>>> None = 0
File "<stdin>", line 1
SyntaxError: cannot assign to None
Python 3
>>> False = 1
True
>>> iskeyword("None")
False
>>> iskeyword("print")
True
# Python 2.7
>>> from keyword import iskeyword, kwlist
>>> kwlist
['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']
>>> iskeyword("pass")
True
>>> iskeyword("None")
False
>>> iskeyword("print")
True
Documentacin
La funcin help puede recibir como argumento el nombre de una palabra
reservada como una cadena.
>>> help("assert")>>> help("assert")
and / or
Representaciones lgicas de y y , respectivamente.
>>> True and False
False
>>> True and True
True
>>> False and False
False
>>> True or False
True
sin_definir
print(e)
...
name 'sin_definir' is not defined
>>> try:
... sin_definir
... except NameError as e:
... print(e)
...
name 'sin_definir' is not defined
>>> try:
...
sin_definir
print(e)
...
name 'sin_definir' is not defined
assert
Durante la depuracin (si __debug__ es True), assert permite especificar una
expresin que lanzar AssertionError en caso de ser evaluada como falsa.
>>> assert 1 == 2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AssertionError
>>> assert 1 == 1
>>> assert 1 == 2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AssertionError
>>> assert 1 == 1
>>> assert 1 == 2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AssertionError
>>> 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
Finaliza la ejecucin de un bucle.
>>> while True:
...
break
...
>>> for i in range(10):
...
if i == 4:
...
...
break
else:
...
print(i)
...
0
1
2
3
>>> while True:
... break
...
>>> for i in range(10):
... if i == 4:
... break
... else:
... print(i)
...
0
1
2
3
>>> while True:
...
break
...
>>> for i in range(10):
...
if i == 4:
...
...
...
break
else:
print(i)
...
0
1
2
3
class
Define una clase.
>>> class C:
...
...
...
def __init__(self):
print("Hello world!")
>>> c = C()
Hello world!
>>> class C:
... def __init__(self):
... print("Hello world!")
...
>>> c = C()
Hello world!
>>> class C:
...
def __init__(self):
...
print("Hello world!")
...
>>> c = C()
Hello world!
continue
Suspende la ejecucin de un bucle para resumirla con el siguiente elemento.
>>> for i in range(10):
...
if i == 4:
...
...
...
...
0
1
2
3
5
6
7
8
continue
else:
print(i)
9
>>> for i in range(10):
... if i == 4:
... continue
... else:
... print(i)
...
0
1
2
3
5
6
7
8
9
>>> for i in range(10):
...
if i == 4:
...
...
...
...
0
1
2
3
5
6
7
8
continue
else:
print(i)
9
Tambin aplicable a bucles while.
def
Define una funcin.
>>> def func(a):
...
print(a)
...
>>> func("Hello world!")
Hello world!
>>> def func(a):
... print(a)
...
>>> func("Hello world!")
Hello world!
>>> def func(a):
...
print(a)
...
>>> func("Hello world!")
Hello world!
del
En caso de utilizarse seguido de un objeto, elimina su referencia.
>>> a = 1
>>> a
1
>>> del a
>>> a
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined
>>> a = 1
>>> a
1
>>> del a
>>> a
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined
>>> a = 1
>>> a
1
>>> del a
>>> a
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'a' is not defined
En diccionarios, remueve el elemento del mismo. En listas, adems, reordena
el conjunto de elementos para llenar el espacio vaco.
>>> d = {"Yes": 1, "No": 2}
>>> d["Yes"]
1
>>> del d["Yes"]
>>> d["Yes"]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'Yes'
>>> d
{'No': 2}
>>> d = {"Yes": 1, "No": 2}
>>> d["Yes"]
1
'No'
>>> L
['No']
>>> L = ["Yes", "No"]
>>> L[0]
'Yes'
>>> del L[0]
>>> L[0]
'No'
>>> L
['No']
exec
Permite ejecutar cdigo Python a partir de una cadena o archivo.
>>> exec "a = 1"
>>> a
1
>>> exec "a = 1"
>>> a
1
>>> exec "a = 1"
>>> a
1
Su utilizacin no es recomendada. Vase ms informacin en la documentacin
oficial.
nicamente en versiones anteriores a Python 3.x. A partir de esta ltima,
exec() es una funcin incorporada por defecto.
for
Permite recorrer los elementos de un objeto iterable (listas, tuplas, diccionarios,
etc.).
>>> for i in (1, 2, 3):
...
print(i)
...
1
2
3
>>> for i in (1, 2, 3):
... print(i)
...
1
2
3
>>> for i in (1, 2, 3):
...
print(i)
...
1
2
3
from
Importa uno o ms objetos de un modulo, prescindiendo del nombre de ste
como prefijo al ser utilizado.
>>> from keyword import kwlist, iskeyword
>>> iskeyword("assert")
True
>>> from keyword import kwlist, iskeyword
>>> iskeyword("assert")
True
>>> from keyword import kwlist, iskeyword
>>> iskeyword("assert")
True
Si se quieren importar todos los objetos, puede utilizarse un asterisco.
global a
...
a=2
...
>>> f()
>>> a
2
>>> a = 1
>>> def f():
... global a
... a = 2
...
>>> f()
>>> a
2
>>> a = 1
>>> def f():
...
global a
...
a=2
...
>>> f()
>>> a
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.
>>> a = 1
>>> def f():
...
a=2
...
>>> f()
>>> a
1
>>> a = 1
>>> def f():
... a = 2
...
>>> f()
>>> a
1
>>> a = 1
>>> def f():
...
a=2
...
>>> f()
>>> a
1
if / elif / else
if a:
# bool(a) es True
print("a")
elif b:
# bool(a) es False
# bool(b) es True
print("b")
elif c:
# bool(a) es False
# bool(b) es False
# bool(c) es True
print("c")
else:
# Todas las anteriores son falsas.
print("Ninguna de las anteriores.")
if a:
# bool(a) es True
print("a")
elif b:
# bool(a) es False
# bool(b) es True
print("b")
elif c:
# bool(a) es False
# bool(b) es False
# bool(c) es True
print("c")
else:
# Todas las anteriores son falsas.
print("Ninguna de las anteriores.")
if a:
# bool(a) es True
print("a")
elif b:
# bool(a) es False
# bool(b) es True
print("b")
elif c:
# bool(a) es False
# bool(b) es False
# bool(c) es True
print("c")
else:
# Todas las anteriores son falsas.
print("Ninguna de las anteriores.")
else incluye un uso adicional (vase ms adelante).
import
Importa un mdulo, o bien un objeto de ste si es utilizado junto a from.
>>> import keyword
>>> keyword.iskeyword("assert")
True
>>> import keyword
>>> keyword.iskeyword("assert")
True
>>> import keyword
>>> keyword.iskeyword("assert")
True
in
Determina la existencia de un determinado valor dentro de una lista, tupla,
diccionario o cualquier objeto iterable.
>>> 2 in (1, 2, 3)
True
>>> "Hello" in "Hello, world!"
True
>>> "Si" in {"Yes": 1, "No": 2}
False
>>> 2 in (1, 2, 3)
True
>>> "Hello" in "Hello, world!"
True
>>> "Si" in {"Yes": 1, "No": 2}
False
>>> 2 in (1, 2, 3)
True
>>> "Hello" in "Hello, world!"
True
>>> "Si" in {"Yes": 1, "No": 2}
False
is
Determina si dos objetos son iguales, a diferencia de los signos de equivalencia
(==), que determinan si ambos tienen el mismo valor.
>>> class Number:
...
...
...
...
...
>>> a = Number(1)
>>> b = Number(1)
>>> a == b
True
>>> a is b
False
>>> c = b
>>> b is c
True
...
>>> a = Number(1)
>>> b = Number(1)
>>> a == b
True
>>> a is b
False
>>> c = b
>>> b is c
True
i=1
...
def b():
...
nonlocal i
...
i=2
...
b()
...
print(i)
...
>>> a()
2
>>> def a():
... i = 1
... def b():
... nonlocal i
... i = 2
... b()
... print(i)
...
>>> a()
2
>>> def a():
...
i=1
...
def b():
...
nonlocal i
...
i=2
...
b()
...
print(i)
...
>>> a()
2
Sin el empleo de este vocablo no habra sido posible modificar el valor de i
desde b().
>>> def a():
...
i=1
...
def b():
...
i=2
...
b()
...
print(i)
...
>>> a()
1
>>> def a():
... i = 1
... def b():
... i = 2
... b()
... print(i)
...
>>> a()
1
>>> def a():
...
i=1
...
def b():
...
i=2
...
b()
...
print(i)
...
>>> a()
1
Soportado nicamente en Python 3.
not
Operador lgico no.
>>> not True
False
>>> not False
True
>>> not True
False
>>> not False
True
>>> not True
False
>>> not False
True
pass
pass
...
>>> f()
>>> def f():
... pass
...
>>> f()
>>> def f():
...
pass
...
>>> f()
print
Imprime en pantalla una determinada cadena. Otros objetos son convertidos
automticamente.
>>> print "Hello, world!"
Hello, world!
>>> print 1
1
>>> print "Hello, world!"
Hello, world!
>>> print 1
1
>>> print "Hello, world!"
Hello, world!
>>> print 1
1
nicamente en versiones anteriores a Python 3.x. A partir de esta ltima,
print() es una funcin incorporada por defecto.
raise
Lanza una excepcin.
>>> raise NameError
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError
>>> raise NameError
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError
>>> raise NameError
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError
return
Dentro de una funcin, especifica el valor de retorno.
>>> def f():
...
return 1
...
>>> f()
1
>>> def f():
... return 1
...
>>> f()
1
>>> def f():
...
return 1
...
>>> f()
1
True, False y None
>>> True == 1
True
>>> False == 0
True
>>> True == 1
True
>>> False == 0
True
>>> True == 1
True
>>> False == 0
True
None es utilizado para indicar la ausencia de un valor en un objeto
determinado.
Estos vocablos son palabras reservadas a partir de Python 3.
try / except / else / finally
Las clusula try / except permite capturar una excepcin dentro de una
determinada porcin de cdigo.
try:
func()
except Exception:
print("Ha ocurrido un error.")
try:
func()
except Exception:
print("Ha ocurrido un error.")
try:
func()
except Exception:
cleanup()
try:
func()
except Exception:
print("Ha ocurrido un error.")
else:
print("Ejecutado exitosamente.")
finally:
cleanup()
try:
func()
except Exception:
print("Ha ocurrido un error.")
else:
print("Ejecutado exitosamente.")
finally:
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.
try:
func()
except Exception:
print("Ha ocurrido un error.")
else:
print("Ejecutado exitosamente.")
cleanup()
try:
func()
except Exception:
cleanup()
try:
func()
except Exception:
print("Ha ocurrido un error.")
else:
print("Ejecutado exitosamente.")
cleanup()
while
Ejecuta un bloque de cdigo mientras que la expresin sea verdadera.
>>> i = 0
>>> while i < 10:
...
print(i)
...
i=i+1
...
0
1
2
3
4
5
6
7
8
9[/python]
<h6><code>with</code></h6>
Permite encapsular la ejecucin de un bloque de cdigo, de modo que la
inicializacin y finalizacin de un objeto es realizada automticamente por
Python, utilizando las funciones <code>__enter__</code> y
<code>__exit__</code>.
[python]with open("info.txt"):
raise Exception
>>> i = 0
>>> while i < 10:
... print(i)
... i = i + 1
...
0
1
2
3
4
5
6
7
8
9[/python]
<h6><code>with</code></h6>
Permite encapsular la ejecucin de un bloque de cdigo, de modo que la
inicializacin y finalizacin de un objeto es realizada automticamente por
Python, utilizando las funciones <code>__enter__</code> y
<code>__exit__</code>.
[python]with open("info.txt"):
raise Exception
>>> i = 0
>>> while i < 10:
...
print(i)
...
i=i+1
...
0
1
2
3
4
5
6
7
8
9[/python]
<h6><code>with</code></h6>
Permite encapsular la ejecucin de un bloque de cdigo, de modo que la
inicializacin y finalizacin de un objeto es realizada automticamente por
Python, utilizando las funciones <code>__enter__</code> y
<code>__exit__</code>.
[python]with open("info.txt"):
raise Exception
En este caso, el archivo es cerrado automticamente antes de propagarse la
excepcin. Puede indicarse un objeto que contenga una referencia a, en este
caso, el fichero.
try:
f = open("info.txt")
raise Exception
f.close()
except Exception:
print f.closed # False
Vase PEP 343 - The "with" Statement para ms informacin.
yield
Se comporta al igual que return, con la diferencia que en lugar de retornar un
nico valor, retorna elementos que conforman un generador (un objeto iterable
que puede recorrerse una vez, ya que el contenido no es almacenado en la
memoria), por lo que puede emplearse mltiples veces en una misma funcin.
>>> def f():
...
yield 1
...
yield 2
...
yield 3
...
>>> g = f()
>>> for i in g:
...
print(i)
...
1
2
3
>>> for i in g:
...
print(i)
...
>>> def f():
... yield 1
... yield 2
... yield 3
...
>>> g = f()
>>> for i in g:
... print(i)
...
1
2
3
>>> for i in g:
... print(