Está en la página 1de 6

Tim Peters, El Zen de Python

Desde la versi�n 2.1.2, Python incluye estos puntos (en su versi�n original en
ingl�s) como un huevo de pascua que se muestra al ejecutar import this.28?

La LAMP comprende Python (aqu� con Squid)


Modo interactivo
El int�rprete de Python est�ndar incluye un modo interactivo en el cual se escriben
las instrucciones en una especie de int�rprete de comandos: las expresiones pueden
ser introducidas una a una, pudiendo verse el resultado de su evaluaci�n
inmediatamente, lo que da la posibilidad de probar porciones de c�digo en el modo
interactivo antes de integrarlo como parte de un programa. Esto resulta �til tanto
para las personas que se est�n familiarizando con el lenguaje como para los
programadores m�s avanzados.

Existen otros programas, como IDLE, bpython e IPython,29? que a�aden


funcionalidades extra al modo interactivo, como completamiento autom�tico de c�digo
y coloreado de la sintaxis del lenguaje.

Ejemplo del modo interactivo:

>>> 1 + 1
2
>>> a = range(10)
>>> print(list(a))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Elementos del lenguaje y sintaxis
Python est� destinado a ser un lenguaje de f�cil lectura. Su formato es visualmente
ordenado y, a menudo, usa palabras clave en ingl�s donde otros idiomas usan
puntuaci�n. A diferencia de muchos otros lenguajes, no utiliza corchetes para
delimitar bloques y se permiten puntos y coma despu�s de las declaraciones, pero
rara vez, si es que alguna vez, se utilizan. Tiene menos excepciones sint�cticas y
casos especiales que C o Pascal.

Dise�ado para ser le�do con facilidad, una de sus caracter�sticas es el uso de
palabras donde otros lenguajes utilizar�an s�mbolos. Por ejemplo, los operadores
l�gicos !, || y && en Python se escriben not, or y and, respectivamente.

El contenido de los bloques de c�digo (bucles, funciones, clases, etc.) es


delimitado mediante espacios o tabuladores, conocidos como sangrado o indentaci�n,
antes de cada l�nea de �rdenes pertenecientes al bloque.30? Python se diferencia
as� de otros lenguajes de programaci�n que mantienen como costumbre declarar los
bloques mediante un conjunto de caracteres, normalmente entre llaves {}.31?32? Se
pueden utilizar tanto espacios como tabuladores para sangrar el c�digo, pero se
recomienda no mezclarlos.33?

Funci�n factorial en C (sangr�a opcional) Funci�n factorial en Python (sangr�a


obligatoria)
int factorial(int x)
{
if (x < 0 || x % 1 != 0) {
printf("x debe ser un numero entero mayor o igual a 0");
return -1; // Error
}
if (x == 0) {
return 1;
}
return x * factorial(x - 1);
}
def factorial(x):
assert x >= 0 and x % 1 == 0, "x debe ser un entero mayor o igual a 0."
if x == 0:
return 1
else:
return x * factorial(x - 1)
Debido al significado sint�ctico de la sangr�a, cada instrucci�n debe estar
contenida en una sola l�nea. No obstante, si por legibilidad se quiere dividir la
instrucci�n en varias l�neas, a�adiendo una barra invertida \ al final de una
l�nea, se indica que la instrucci�n contin�a en la siguiente.

Estas instrucciones son equivalentes:

lista = ['valor 1', 'valor 2', 'valor 3']


cadena = 'Esto es una cadena bastante larga'
lista = ['valor 1', 'valor 2' \
, 'valor 3']
cadena = 'Esto es una cadena ' \
'bastante larga'
Comentarios
Los comentarios se pueden poner de dos formas. La primera y m�s apropiada para
comentarios largos es utilizando la notaci�n ''' comentario ''', tres ap�strofos de
apertura y tres de cierre. La segunda notaci�n utiliza el s�mbolo #, que se
extiende hasta el final de la l�nea.

El int�rprete no tiene en cuenta los comentarios, lo cual es �til si deseamos poner


informaci�n adicional en el c�digo. Por ejemplo, una explicaci�n sobre el
comportamiento de una secci�n del programa.

'''
Comentario m�s largo en una l�nea en Python
'''
print("Hola mundo") # Tambi�n es posible a�adir un comentario al final de una
l�nea de c�digo
Variables
Las variables se definen de forma din�mica, lo que significa que no se tiene que
especificar cu�l es su tipo de antemano y puede tomar distintos valores en otro
momento, incluso de un tipo diferente al que ten�a previamente. Se usa el s�mbolo =
para asignar valores.

x = 1
x = "texto" # Esto es posible porque los tipos son asignados din�micamente
Los nombres de variables pueden contener n�meros y letras pero deben comenzar con
una letra. Adem�s, existen 35 palabras reservadas:34?35?

and
as
assert
async
await
break
class
continue
def
del
elif
else
except
False
finally
for
from
global
if
import
in
is
lambda
None
nonlocal
not
or
pass
raise
return
True
try
while
with
yield
A partir de Python 3.10 existen tambi�n soft keywords, palabras que son reservadas
en ciertos contextos, pero que normalmente pueden ser usadas como nombres de
variables. Estos identificadores son match, case y _.

Tipos de datos

Jerarqu�a de los tipos b�sicos en Python 3.


Los tipos de datos b�sicos se pueden resumir en esta tabla:

Tipo Clase Notas Ejemplo


str Cadena en determinado formato de codificaci�n (UTF-8 por defecto)
Inmutable 'Cadena'
bytes Vector o array de bytes Inmutable b'Cadena'
list Secuencia Mutable, puede contener objetos de diversos tipos [4.0,
'Cadena', True]
tuple Secuencia Inmutable, puede contener objetos de diversos tipos (4.0,
'Cadena', True)
set Conjunto Mutable, sin orden, no contiene duplicados {4.0, 'Cadena',
True}
frozenset Conjunto Inmutable, sin orden, no contiene duplicados
frozenset([4.0, 'Cadena', True])
dict Diccionario Grupo de pares clave:valor {'key1': 1.0, 'key2': False}
int N�mero entero Precisi�n arbitraria 42
float N�mero decimal Coma flotante de doble precisi�n 3.1415927
complex N�mero complejo Parte real y parte imaginaria j. (4.5 + 3j)
bool Booleano Valor booleano (verdadero o falso) True o False
Mutable: si su contenido (o dicho valor) puede cambiarse en tiempo de ejecuci�n.
Inmutable: si su contenido (o dicho valor) no puede cambiarse en tiempo de
ejecuci�n.
Condicionales
Una sentencia condicional ejecuta su bloque de c�digo interno solo si se cumple
cierta condici�n. Se define usando la palabra clave if seguida de la condici�n y el
bloque de c�digo. Si existen condiciones adicionales, se introducen usando la
palabra clave elif seguida de la condici�n y su bloque de c�digo. Las condiciones
se eval�an de manera secuencial hasta encontrar la primera que sea verdadera, y su
bloque de c�digo asociado es el �nico que se ejecuta. Opcionalmente, puede haber un
bloque final (la palabra clave else, seguida de un bloque de c�digo) que se ejecuta
solo cuando todas las condiciones anteriores fueron falsas.
>>> verdadero = True
>>> if verdadero: # No es necesario poner "verdadero == True"
... print("Verdadero")
... else:
... print("Falso")
...
Verdadero
>>> lenguaje = "Python"
>>> if lenguaje == "C": # lenguaje no es "C", por lo que este bloque se obviar� y
evaluar� la siguiente condici�n
... print("Lenguaje de programaci�n: C")
... elif lenguaje == "Python": # Se pueden a�adir tantos bloques "elif" como se
quiera
... print("Lenguaje de programaci�n: Python")
... else: # En caso de que ninguna de las anteriores condiciones fuera cierta, se
ejecutar�a este bloque
... print("Lenguaje de programaci�n: indefinido")
...
Lenguaje de programaci�n: Python
>>> if verdadero and lenguaje == "Python": # Uso de "and" para comprobar que ambas
condiciones son verdaderas
... print("Verdadero y Lenguaje de programaci�n: Python")
...
Verdadero y Lenguaje de programaci�n: Python
Bucle for
El bucle for es similar a foreach en otros lenguajes. Recorre un objeto iterable,
como una lista, una tupla o un generador, y por cada elemento del iterable ejecuta
el bloque de c�digo interno. Se define con la palabra clave for seguida de un
nombre de variable, seguido de in, seguido del iterable, y finalmente el bloque de
c�digo interno. En cada iteraci�n, el elemento siguiente del iterable se asigna al
nombre de variable especificado:

>>> lista = ["a", "b", "c"]


>>> for i in lista: # Iteramos sobre una lista, que es iterable
... print(i)
...
a
b
c
>>> cadena = "abcdef"
>>> for i in cadena: # Iteramos sobre una cadena, que tambi�n es iterable
... print(i, end=', ') # A�adiendo end=', ' al final hacemos que no introduzca
un salto de l�nea, sino una coma y un espacio
...
a, b, c, d, e, f,
Bucle while
El bucle while eval�a una condici�n y, si es verdadera, ejecuta el bloque de c�digo
interno. Contin�a evaluando y ejecutando mientras la condici�n sea verdadera. Se
define con la palabra clave while seguida de la condici�n, y a continuaci�n el
bloque de c�digo interno:

>>> numero = 0
>>> while numero < 10:
... print(numero, end=" ")
... numero += 1 # Un buen programador modificar� las variables de control al
finalizar el ciclo while
...
0 1 2 3 4 5 6 7 8 9
Listas y Tuplas
Para declarar una lista se usan los corchetes [], en cambio, para declarar una
tupla se usan los par�ntesis (). En ambas los elementos se separan por comas, y en
el caso de las tuplas es necesario que tengan como m�nimo una coma.
Tanto las listas como las tuplas pueden contener elementos de diferentes tipos. No
obstante, las listas suelen usarse para elementos del mismo tipo en cantidad
variable mientras que las tuplas se reservan para elementos distintos en cantidad
fija.
Para acceder a los elementos de una lista o tupla se utiliza un �ndice entero
(empezando por "0", no por "1"). Se pueden utilizar �ndices negativos para acceder
elementos a partir del final.
Las listas se caracterizan por ser mutables, es decir, se puede cambiar su
contenido en tiempo de ejecuci�n, mientras que las tuplas son inmutables ya que no
es posible modificar el contenido una vez creadas.
Listas
>>> lista = ["abc", 42, 3.1415]
>>> lista[0] # Acceder a un elemento por su �ndice
'abc'
>>> lista[-1] # Acceder a un elemento usando un �ndice negativo
3.1415
>>> lista.append(True) # A�adir un elemento al final de la lista
>>> lista
['abc', 42, 3.1415, True]
>>> del lista[3] # Borra un elemento de la lista usando un �ndice (en este caso:
True)
>>> lista[0] = "xyz" # Re-asignar el valor del primer elemento de la lista
>>> lista[0:2] # Mostrar los elementos de la lista del �ndice "0" al "2" (sin
incluir este �ltimo)
['xyz', 42]
>>> lista_anidada = [lista, [True, 42]] # Es posible anidar listas
>>> lista_anidada
[['xyz', 42, 3.1415], [True, 42]]
>>> lista_anidada[1][0] # Acceder a un elemento de una lista dentro de otra lista
(del segundo elemento, mostrar el primer elemento)
True
Tuplas
>>> tupla = ("abc", 42, 3.1415)
>>> tupla[0] # Acceder a un elemento por su �ndice
'abc'
>>> del tupla[0] # No es posible borrar (ni a�adir) un elemento en una tupla, lo
que provocar� una excepci�n
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object doesn't support item deletion
>>> tupla[0] = "xyz" # Tampoco es posible re-asignar el valor de un elemento en
una tupla, lo que tambi�n provocar� una excepci�n
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>> tupla[0:2] # Mostrar los elementos de la tupla del �ndice "0" al "2" (sin
incluir este �ltimo)
('abc', 42)
>>> tupla_anidada = (tupla, (True, 3.1415)) # Tambi�n es posible anidar tuplas
>>> 1, 2, 3, "abc" # Esto tambi�n es una tupla, aunque es recomendable ponerla
entre par�ntesis (recuerde que requiere, al menos, una coma)
(1, 2, 3, 'abc')
>>> (1) # Aunque se encuentra entre par�ntesis, esto no es una tupla, ya que no
posee al menos una coma, por lo que �nicamente aparecer� el valor
1
>>> (1,) # En cambio, en este otro caso, s� es una tupla
(1,)
>>> (1, 2) # Con m�s de un elemento no es necesaria la coma final
(1, 2)
>>> (1, 2,) # Aunque agregarla no modifica el resultado
(1, 2)
Diccionarios
Para declarar un diccionario se usan las llaves {}. Contienen elementos separados
por comas, donde cada elemento est� formado por un par clave:valor (el s�mbolo :
separa la clave de su valor correspondiente).
Los diccionarios son mutables, es decir, se puede cambiar el contenido de un valor
en tiempo de ejecuci�n.
En cambio, las claves de un diccionario deben ser inmutables. Esto quiere decir,
por ejemplo, que no podremos usar ni listas ni diccionarios como claves.
El valor asociado a una clave puede ser de cualquier tipo de dato, incluso un
diccionario.
>>> diccionario = {"cadena": "abc", "numero": 42, "lista": [True, 42]} #
Diccionario que tiene diferentes valores por cada clave, incluso una lista
>>> diccionario["cadena"] # Usando una clave, se accede a su valor
'abc'
>>> diccionario["lista"][0] # Acceder a un elemento de una lista dentro de un
valor (del valor de la clave "lista", mostrar el primer elemento)
True
>>> diccionario["cadena"] = "xyz" # Re-asignar el valor de una clave
>>> diccionario["cadena"]
'xyz'
>>> diccionario["decimal"] = 3.1415927 # Insertar un nuevo elemento clave:valor
>>> diccionario["decimal"]
3.1415927
>>> diccionario_mixto = {"tupla": (True, 3.1415), "diccionario": diccionario} #
Tambi�n es posible que un valor sea un diccionario
>>> diccionario_mixto["diccionario"]["lista"][1] # Acceder a un elemento dentro de
una lista, que se encuentra dentro de un diccionario
42
>>> diccionario = {("abc",): 42} # S� es posible que una clave sea una tupla, pues
es inmutable
>>> diccionario = {["abc"]: 42} # No es posible que una clave sea una lista, pues
es mutable, lo que provocar� una excepci�n
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
Sentencia match-case

También podría gustarte