>>>
..
.
.pyc
y .pyo
para que sea más rápido ejecutar el mismo
fichero la segunda vez (la compilación a bytecode vale de una vez a otra).
Se dice que este ``lenguaje intermedio'' se ejecuta sobre una
``máquina virtual'' que llama a las subrutinas correspondientes a cada
código del bytecode.
La conversión implícita de una instancia de un tipo a otro durante una operación
que involucra dos argumentos del mismo tipo. Por ejemplo,
int(3.15)
convierte el número de coma flotante al entero
3
, pero en 3+4.5
, cada argumento es de un tipo diferente (un entero y un
flotante) y hay que convertir los dos en el mismo tipo antes de que puedan
ser sumados o se lanzará un TypeError
. La coerción entre dos operandos
se puede realizar con la función interna coerce
; por ello,
3+4.5
equivale a operator.add(*coerce(3, 4.5))
y devuelve
operator.add(3.0, 4.5)
. Sin coerción, todos los argumentos, incluso de tipos
compatibles, habrían de ser normalizados al mismo tipo por el programador, es decir,
float(3)+4.5
en lugar de simplemente 3+4.5
.
11/4
se evalúa en la actualidad a 2
a diferencia del
valor 2.75
que devuelve la división de coma flotante.
Cuando se dividen dos enteros el resultado siempre será otro entero
(se aplicará la función truncar al resultado). Sin embargo, si uno de
los operandos es de otro tipo numérico (por ejemplo, un float),
el resultado se adaptará (ver coerción) a un tipo común.
Por ejemplo, un entero dividido por un flotante dará un valor flotante,
posiblemente con una fracción decimal. Se puede forzar la división entera
utilizando el operador //
en lugar del operador /
. Ver también
__future__.
>>> sum(i*i for i in range(10)) # la suma de los cuadrados 0, 1, 4..81 285
11/4
actualmente se evalúa como
2
. Si el módulo en que se ejecuta ha activado la división fiel
ejecutando:
from __future__ import division
la expresión 11/4
se evaluaría como 2.75
. Si se importa
el módulo __future__
propiamente dicho y se evalúan sus variables, se puede ver cuándo
se añadió una nueva característica y cuando será activa de manera predeterminada:
>>> import __future__ >>> __future__.division _Feature((2, 2, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 8192)
El bloqueo que utilizan los hilos de Python para asegurar que sólo se ejecute un hilo a la vez. Esto simplifica Python asegurando que dos procesos no acceden a la memoria simultáneamente. Bloquear el intérprete entero facilita al intérprete ser multihilo, a costa de perder paralelismo en máquinas multiprocesador. Se han realizado esfuerzos para crear un intérprete de ``hilos libres'' (uno que bloquee los datos con un nivel más fino), pero el rendimiento se resentía en el caso habitual de un solo procesador.
python
sin argumentos (o seleccionarlo desde el menú principal del
ordenador). Es un medio muy potente de experimentar o inspeccionar módulos
y paquetes (recuerda help(x)
).
for
lo hace automáticamente, creando una variable temporal
anónima para guardar el iterador durante la ejecución del bucle. Ver
también iterador, secuencia y generador.
resultado = ["0x%02x"
% x for x in range(256) if x % 2 == 0]
genera una lista de cadenas
que contienen los números hexadecimales (0x...) pares del rango
0..255. La cláusula if es opcional. Si se hubiese omitido,
se habrían procesado todos los elementos de range(256)
.
Una extensión del habitual sistema de números reales en el que todos los
números se expresan como una suma de una parte real y una imaginaria. Los
números imaginarios son múltiplos reales de la unidad imaginaria (la raíz cuadrada
de -1
), que se escribe i
en matemáticas o j
en ingeniería.
Python tiene soporte de serie para números complejos, que se escriben
en la segunda notación; la parte imaginaria se escribe con un sufijo
j
, por ejemplo, 3+1j
. Para acceder a los equivalentes complejos
del módulo math, usa cmath. El uso de números complejos es una
técnica relativamente avanzada. Si no sabes si los necesitas, es casi seguro que
puedes hacerles caso omiso con tranquilidad.
import this
'' en el intérprete interactivo.
Consultar en Acerca de este documento... información para sugerir cambios.