Documentos de Académico
Documentos de Profesional
Documentos de Cultura
3: Sangría de bloque
Python usa sangría para definir construcciones de control y bucle. Esto contribuye a la legibilidad
de Python; sin embargo, requiere que el programador preste mucha atención al uso de espacios en
blanco. Por lo tanto, una mala calibración del editor podría provocar que el código se comporte de
forma inesperada.
Python usa el símbolo de dos puntos (:) y la sangría para mostrar dónde comienzan y terminan los
bloques de código (si viene de otro idioma, no confunda esto con estar relacionado de alguna
manera con el operador ternario). Es decir, los bloques en Python, como funciones, bucles,
cláusulas if y otras construcciones, no tienen identificadores finales. Todos los bloques comienzan
con dos puntos y luego contienen las líneas sangradas debajo.
Por ejemplo:
def mi_función(): a = 2
devolver un
# Esta es una definición de función. Tenga en cuenta los dos puntos (:)
# Esta línea pertenece a la función porque tiene sangría # Esta línea también pertenece a la misma
función
si a > b:
imprimir(a)
demás:
imprimir(b)
# Esto es parte del bloque if # else debe estar en el mismo nivel que if
Los bloques que contienen exactamente una declaración de una sola línea se pueden colocar en la
misma línea, aunque esta forma generalmente no se considera un buen estilo:
si x > y: y = x print(y) #
Usar pestañas exclusivamente es posible pero PEP 8, la guía de estilo para el código Python,
establece que se prefieren los espacios.
Python 3 no permite mezclar el uso de tabulaciones y espacios para sangría. En tal caso, se genera
un error en tiempo de compilación: uso inconsistente de tabulaciones y espacios en sangría y el
programa no se ejecutará.
Citando a PEP 8:
El carácter de tabulación debe configurarse para mostrar 8 espacios, para que coincida con la
semántica del idioma, al menos en los casos en que es posible una sangría mixta (accidental). Los
editores también pueden convertir automáticamente el carácter de tabulación a
espacios.
Sin embargo, puede resultar útil configurar el editor para que al presionar la tecla Tab se inserten 4
espacios, en lugar de insertar un carácter de tabulación.
El código fuente de Python escrito con una combinación de tabulaciones y espacios, o con un
número no estándar de espacios de sangría, se puede hacer compatible con pep8 usando
autopep8. (Una alternativa menos poderosa viene con la mayoría de las instalaciones de Python:
reindent.py)
Sección 1.4: Tipos de datos
bool: un valor booleano de Verdadero o Falso. Las operaciones lógicas como y o no se pueden
realizar en valores booleanos.
no x
En Python 2.x y Python 3.x, un booleano también es un int. El tipo bool es una subclase del tipo int
y Verdadero y Falso son sus únicas instancias:
Verdadero + Falso == 1 # 1 + 0 == 1
Verdadero * Verdadero == 1 # 1 * 1 == 1
Números
a=2
b = 100
c = 123456789 d
= 38563846326424324
Nota: en versiones anteriores de Python, estaba disponible un tipo largo y era distinto de int. Los
dos se han unificado.
a = 2.0 b
= 100.e0
c = 123456789.e1
a = 2 + 1j b
= 100 + 10j
Los operadores <, <=, > y >= generarán una excepción TypeError cuando cualquier operando sea un
número complejo.
Cadenas
str: una cadena Unicode. El tipo de bytes de 'hola' : una cadena de bytes. El tipo de b'hola'
Secuencias y colecciones.
Python diferencia entre secuencias ordenadas y colecciones desordenadas (como set y dict).
a = invertido('hola')
a = (1, 2, 3) b =
a = [1, 2, 3] b =
['a', 1, 'python', (1, 2), [1, 2]] b[2] = 'algo más' # permitido
No hashable; mudable.
conjunto: una colección desordenada de valores únicos. Los elementos deben ser hash.
un = {1, 2, 'un'}
dict: una colección desordenada de pares clavevalor únicos; las claves deben ser hash.
a = {1: 'uno', 2:
'dos'}
cadena'}
Un objeto es hash si tiene un valor hash que nunca cambia durante su vida (necesita un método
hash () ) y se puede comparar con otros objetos (necesita un método eq () ). Los objetos hash que
comparan igualdad deben tener el mismo valor hash.
Constantes incorporadas
Junto con los tipos de datos integrados, hay una pequeña cantidad de constantes integradas en el
espacio de nombres integrado:
Verdadero: el valor verdadero del tipo incorporado bool. Falso: el valor falso del tipo incorporado
bool.
Ninguno: un objeto singleton utilizado para señalar que un valor está ausente.
Elipsis o ...: utilizado en el núcleo de Python3+ en cualquier lugar y uso limitado en Python2.7+
como parte de la notación de matriz. Los paquetes numpy y relacionados usan esto como una
referencia para "incluir todo" en las matrices.
NotImplemented: un singleton usado para indicarle a Python que un método especial no admite
los argumentos específicos, y Python probará alternativas si están disponibles.
a = Ninguno # No se asignará ningún valor. Cualquier tipo de datos válido se puede asignar más
tarde
Ninguno no tiene ningún orden natural. El uso de operadores de comparación de pedidos (<, <=,
>=, >) ya no se admite y generará un TypeError.
Ninguno es siempre menor que cualquier número (Ninguno < 32 se evalúa como Verdadero).
En Python, podemos verificar el tipo de datos de un objeto usando el tipo de función incorporada.
a = '123'
imprimir(tipo(b))
En declaraciones condicionales es posible probar el tipo de datos con isinstance. Sin embargo,
normalmente no se recomienda confiar en el tipo de variable.
yo = 7
i es instancia(i, int): yo += 1
Para obtener información sobre las diferencias entre type() e isinstance() lea: Diferencias entre
isinstance y type en Python
x = Ninguno
si x es Ninguno:
Por ejemplo, '123' es de tipo str y se puede convertir a un número entero usando la función int .
a = '123' b =
int(a)
La conversión desde una cadena flotante como '123.456' se puede realizar utilizando la función
flotante .
a = '123.456' b =
float(a) c = int(a) #
ValueError: literal no válido para int() con base 10: '123.456' d = int(b) # 123
a = 'hola' lista(a)
# ['h', 'e', 'l', 'l', 'o'] set(a) # {'o', 'e', 'l', ' h'} tupla(a) # ('h', 'e', 'l', 'l', 'o')
Con etiquetas de una letra justo delante de las comillas, puede saber qué tipo de cadena desea
definir.
b'foo bar': resultados bytes en Python 3, str en Python 2 u'foo bar': resultados str en Python 3,
unicode en Python 2 'foo bar': resultados str
r'foo bar': resultados de la llamada cadena sin formato, donde no es necesario escapar de
caracteres especiales, todo se toma palabra por palabra a medida que escribe
# bar
crudo
Un objeto se llama mutable si se puede cambiar. Por ejemplo, cuando pasa una lista a alguna
función, la lista se puede cambiar:
def f(m):
x = [1, 2] f(x) x
== [1,
Un objeto se llama inmutable si no se puede cambiar de ninguna manera. Por ejemplo, los
números enteros son inmutables, ya que no hay forma de cambiarlos:
2) g(x) x == (1,
2) #
Siempre será Verdadero, ya que ninguna función puede cambiar el objeto (1, 2)
Tenga en cuenta que las variables en sí son mutables, por lo que podemos reasignar la variable x,
pero esto no cambia el objeto al que x había apuntado previamente. Solo hizo que x apuntara a un
nuevo objeto.
Los tipos de datos cuyas instancias son mutables se denominan tipos de datos mutables, y lo
mismo ocurre con los objetos y tipos de datos inmutables.
cadena
tupla de bytes
conjunto congelado
colocar
dictar
Hay varios tipos de colecciones en Python. Mientras que tipos como int y str contienen un único
valor, los tipos de colección contienen varios valores.
Lista
lista_vacia = []
Los elementos de una lista no están restringidos a un único tipo de datos, lo cual tiene sentido
dado que Python es un lenguaje dinámico:
# Craig
Los índices también pueden ser negativos, lo que significa contar desde el final de la lista (siendo 1
el índice del último elemento). Entonces, usando la lista del ejemplo anterior:
Las listas son mutables, por lo que puedes cambiar los valores en una lista:
print(nombres)
nombres.remove("Bob")
dieciséis
Obtenga el índice en la lista del primer elemento cuyo valor es x. Mostrará un error si no existe
dicho elemento.
nombre.index("Alicia") 0
len(nombres) 6
a = [1, 1, 1, 2, 3, 4] a.cuenta(1) 3
invertir la lista
a.reverse() [4, 3,
2, 1, 1, 1] # o a[::1] [4, 3, 2, 1,
1, 1]