You are on page 1of 36

phyton

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

File "<stdin>", line 1


SyntaxError: can't assign to keyword
>>> True = 0
File "<stdin>", line 1
SyntaxError: can't assign to keyword
>>> print = 0
>>> exec = 0
>>> None = 0
File "<stdin>", line 1
SyntaxError: can't assign to keyword
>>> False = 1
File "<stdin>", line 1
SyntaxError: can't assign to keyword
>>> True = 0
File "<stdin>", line 1
SyntaxError: can't assign to keyword
>>> print = 0
>>> exec = 0
>>> None = 0
File "<stdin>", line 1
SyntaxError: can't assign to keyword
>>> False = 1
File "<stdin>", line 1
SyntaxError: can't assign to keyword
>>> True = 0
File "<stdin>", line 1
SyntaxError: can't assign to keyword
>>> print = 0
>>> exec = 0
>>> None = 0

File "<stdin>", line 1


SyntaxError: can't assign to keyword
Esto incluye el conjunto de incompatibilidades que se presenta entre ambas
versiones. En ninguna de ellas puede asignarse un valor a None. Sin embargo,
la diferencia radica en que en la rama 2.x es un objeto al que no puede
asignarse un valor; en Python 3, una palabra reservada.
Por lo tanto, la lista de keywords en Python 3 resulta ser la siguiente.
False None True and as assert break class continue def del elif else except
finally for from global if import in is lambda nonlocal not or pass raise return try
while with yield
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.
# 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
# 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
# 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

>>> True or True


True
>>> False or False
False
>>> True and False
False
>>> True and True
True
>>> False and False
False
>>> True or False
True
>>> True or True
True
>>> False or False
False
>>> True and False
False
>>> True and True
True
>>> False and False
False
>>> True or False
True
>>> True or True
True
>>> False or False
False
as

Su funcin es dual. Puede utilizarse al momento de importar un determinado


objeto de un mdulo, para asignar un nombre diferente.
from keyword import kwlist as keyword_listfrom keyword import kwlist as
keyword_list
Adems, se utiliza la siguiente sintaxis para asignar informacin de una
excepcin a un determinado objeto.
>>> try:
...

sin_definir

... except NameError as e:


...

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

... except NameError as e:


...

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

>>> 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
>>> del d["Yes"]
>>> d["Yes"]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'Yes'
>>> d
{'No': 2}
>>> L = ["Yes", "No"]
>>> L[0]
'Yes'
>>> del L[0]
>>> L[0]
'No'
>>> L
['No']
>>> L = ["Yes", "No"]
>>> L[0]
'Yes'
>>> del L[0]
>>> L[0]

'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.

from keyword import *from keyword import *


Aunque esta prctica no es recomendable.
global
Permite modificar el valor de un objeto global desde un mbito con menor
alcance (una funcin, por ejemplo).
>>> a = 1
>>> def f():
...

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:
...
...
...
...

def __init__(self, number):


self.number = number
def __eq__(self, other):
return self.number == other

...
>>> a = Number(1)
>>> b = Number(1)
>>> a == b
True
>>> a is b
False
>>> c = b
>>> b is c
True

>>> class Number:


... def __init__(self, number):
... self.number = number
... def __eq__(self, other):
... return self.number == other
...
>>> a = Number(1)
>>> b = Number(1)
>>> a == b
True
>>> a is b
False
>>> c = b
>>> b is c
True
>>> class Number:
...
...
...
...

def __init__(self, number):


self.number = number
def __eq__(self, other):
return self.number == other

...
>>> a = Number(1)
>>> b = Number(1)
>>> a == b
True
>>> a is b
False
>>> c = b
>>> b is c
True

Siempre debe ser utilizado al comprar con None.


>>> a = None
>>> a is None
True
>>> a = None
>>> a is None
True
>>> a = None
>>> a is None
True
lambda
Vase Funciones lambda.
nonlocal
Permite modificar el valor de un objeto que ha sido creado en un mbito
anterior.
>>> 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
>>> 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

Esta palabra reservada carece de funcin alguna. Es utilizada para rellenar


espacios requeridos por Python para evitar errores de sintaxis.
>>> def f():
...

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:

print("Ha ocurrido un error.")


En caso de no habrse propagado ninguna excepcin, el flujo del programa
seguir luego del trmino else, en caso de encontrarse, al finalizar la ejecucin
de func().
try:
func()
except Exception:
print("Ha ocurrido un error.")
else:
print("Ejecutado exitosamente.")
try:
func()
except Exception:
print("Ha ocurrido un error.")
else:
print("Ejecutado exitosamente.")
try:
func()
except Exception:
print("Ha ocurrido un error.")
else:
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.
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()
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:

print("Ha ocurrido un error.")


else:
print("Ejecutado exitosamente.")

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.

with open("info.txt") as f:with open("info.txt") as f:


De esta manera, puede comprobarse su eficacia:
try:
with open("info.txt") as f:
raise Exception
except Exception:
print f.closed # True
try:
with open("info.txt") as f:
raise Exception
except Exception:
print f.closed # True
try:
with open("info.txt") as f:
raise Exception
except Exception:
print f.closed # True
Por el contrario, el siguiente cdigo deja el fichero abierto.
try:
f = open("info.txt")
raise Exception
f.close()
except Exception:
print f.closed # False
try:
f = open("info.txt")
raise Exception
f.close()
except Exception:
print f.closed # False

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(

You might also like