El intérprete de Python cuenta con funciones internas que siempre se hallan disponibles. Se muestran a continuación, en orden alfabético.
Por ejemplo, la sentencia `import
spam
' causa la siguiente
llamada:
__import__('spam',
globals(),
locals(), [])
;
la sentencia from
spam.jamon import
huevos
resulta en
__import__('spam.jamon',
globals(),
locals(),
['huevos'])
.
Hay que ver que, a pesar de que se pasan locals()
y ['huevos']
como argumentos, la función __import__() no da valor a la
variable local huevos
; esto se realiza con el código adicional generado
por la sentencia import (de hecho, la implementación estándar no utiliza el
argumento locals en absoluto y usa globals sólo para determinar
el contexto del paquete de la sentencia import).
Cuando la variable name tiene la forma package.module
,
normalmente, se devuelve el paquete de nivel más elevado (el nombre hasta el primer
punto, no el módulo denotado por name. Sin embargo,.
cuando se proporciona un argumento fromlist no vacío, se devuelve el
módulo denominado name. Esto se hace de esta manera por
compatibilidad con el bytecode generado para las diferentes clases de
sentencias import. Cuando se utiliza "import spam.jamon.huevos",
el paquete de nivel superior spam
debe colocarse en el espacio
nominal que ha llamado a import, pero cuando se usa "from
spam.jamon import huevos", se ha de utilizar el subpaquete spam.jamon
para encontrar la variable huevos
.
Como remedio a este comportamiento, se puede utilizar getattr()
para extraer los componentes deseados. Por ejemplo, se podría definir la
siguiente función de ayuda:
import string def my_import(name): mod = __import__(name) components = string.split(name, '.') for comp in components[1:]: mod = getattr(mod, comp) return mod
func(args)
, pues en este caso
siempre hay exactamente un argumento).
Si se proporciona el argumento opcional keywords, debe ser
un diccionario cuyas claves sean cadenas. Especifica argumentos
clave a añadir al final de la lista de argumentosd.
chr(97)
devuelve la cadena
'a'
. Es la inversa de la función ord(). El argumento
debe estar en el rango de 0 a 255, ambos incluidos. Se lanza
ValueError si i está fuera de dicho rango.
x
< y
, cero si x == y
y estrictamente positivo
si x > y
.
'<string>'
si no se ha recuperado el código de ningún fichero.
El argumento kind especifica qué tipo de código se ha de compilar.
Puede ser 'exec'
si string es una secuencia de sentencias,
'eval'
si es una sola expresión o 'single'
si es una sola
sentencia interactiva (en cuyo caso, las sentencias-expresión
que den como resultado algo diferente de None
mostrarán
este resultado en pantalla).
delattr(x, 'foobar')
equivale a
del x.foobar
.
>>> import sys >>> dir() ['sys'] >>> dir(sys) ['argv', 'exit', 'modules', 'path', 'stderr', 'stdin', 'stdout']
(a / b, a % b)
.
En el caso de los números en coma flotante, el resultado es
(q, a % b)
, donde q suele ser
math.floor(a / b)
, pero puede ser uno menos.
En cualquier caso, q * b + a % b
se acerca mucho a a, si
a % b
no es cero y tiene el mismo signo que
b, and 0 <= abs(a % b) < abs(b)
.
>>> x = 1 >>> print eval('x+1') 2
También se puede utilizar esta función para ejecutar objetos código
arbitrarios (es decir, los creados con compile()). Para ello,
se debe pasar un objeto código en lugar de una cadena. El objeto código
debe compilarse con el argumento kind a 'eval'
.
Pistas: La ejecución dinámica de sentencias se logra con la sentencia exec. La ejecución de sentencias de un fichero se logra con la función execfile(). Las funciones globals() y locals() devuelven el diccionario actual global y local, respectivamente, lo que puede resultar útil para pasárselo a eval() o execfile().
Los argumentos son un nombre de fichero y dos diccionarios opcionales. El
fichero se analiza y evalúa como una secuencia de sentencias de Python
(de modo similar a un módulo) usando los diccionarios
globals y locals como espacio nominal global y local, respectivamente.
Si se omite el diccionario locals, toma por valor el diccionario globals.
Si se omiten los dos diccionarios, la expresión se evalúa en el entorno en
que se llama a execfile(). El valor devuelto es
None
.
None
, se presupone la función identidad, por lo que
se eliminan todos los elementos falsos (cero, nulo o vacío) de list.
string.atof(x)
.
En caso contrario, el argumento puede ser un entero normal o largo, y
se devuelve un número de coma flotante del mismo valor (dentro de
la precisión de coma flotante de Python).
Nota: Cuando se pasa una cadena, pueden devolverse los valores de NaN e Infinity, dependiendo de la biblioteca de C subyacente. El conjunto de cadenas específico aceptado para devolver estos valores depende por completo de la biblioteca de C y varía de un sistema a otro.
getattr(x, 'foobar')
equivale a x.foobar
. Si el atributo
especificado no existe, se devuelve default si se ha proporcionado o
se lanza AttributeError si no.
getattr(object, name)
, mirando si hace saltar
una excepción o no).
hex(-1)
devuelve '0xffffffff'
.
Si se evalúa en una máquina con el mismo tamaño de palabra,
este literal siempre se evalúa como -1, pero en una máquina
de palabra de diferente tamaño, puede acabar como un entero positivo
muy grande o lanzar una excepción OverflowError.
eval(raw_input(prompt))
.
Advertencia: ¡Esta función no está a salvo de errores de
usuario! Espera una expresión Python válida como entrada. Si la
entrada no es sintácticamente válida, se lanzará
SyntaxError. Se pueden lanzar otras excepciones si
hay cualquier error durante la evaluación (por otra parte, a
veces es justo lo que necesitas cuando hay que escribir un guion
rápidamente para uso por expertos).
Si está cargado el módulo readline, input() lo utilizará para proporcionar edición compleja de línea e histórico de órdenes.
Se debe considerar el uso de la función raw_input() para la entrada de usuarios en general.
string.atoi(x[,
radix])
en este caso.
El parámetro radix proporciona la base para la conversión y puede
ser cualquier entero en el rango [2, 36]. Si se especifica
radix y x no es una cadena, se lanza TypeError.
En otros casos, el argumento puede ser un entero normal o largo, o
un número en coma flotante. La conversión de los números de coma flotante
a enteros está definida por la biblioteca C2.9.
sequence[:]
.
Por ejemplo, list('abc')
devuelve ['a', 'b', 'c']
y
list( (1, 2, 3) )
devuelve [1, 2, 3]
.
string.atol(x)
en este modo. El argumento
puede ser también un entero normal o largo, o un número en coma flotante,
para el que se devuelve un entero largo del mismo valor. La conversión
de los números de coma flotante a enteros viene determinada por la
librería de C, como se veía en la descripción de int().
None
para los elementos que falten.
Si function es None
, se supone la función identidad; si hay
múltiples argumentos lista, map() devuelve una lista de las
tuplas de los elementos correspondientes de cada lista (lo que supone una
especie de transposición matricial). Los argumentos list
pueden ser cualquier tipo de secuencia; el resultado siempre es una lista.
oct(-1)
devuelve '037777777777'
. Si se evalúa en una
máquina de la misma longitud de palabra, este literal se evaluará como
-1, si el tamaño de palabra es diferente podría resultar un
entero positivo grande o lanzar una excepción
OverflowError.
stdio
: filename
es el nombre del fichero a abrir, mode indica cómo se ha de abrir
el fichero: 'r'
en sólo lectura, 'w'
para escritura (truncando
el fichero si existe) y 'a'
para agregar (lo que en algunos sistemas
Unix supone que todas las escrituras se agregan al final del
archivo, sin importar la posición actual del cursor de escritura.
Los modos 'r+'
, 'w+'
y 'a+'
abren el fichero para
actualización (hay que observar que 'w+'
trunca el fichero).
Se ha de añadir 'b'
al modo para abrir el fichero en modo binario,
para los sistemas que diferencian los ficheros binarios y de texto
(si no, se hace caso omiso). Si no es posible abrir el fichero, se lanza
IOError.
Si se omite mode, toma un valor de 'r'
. Al abrir un fichero
binario, se debe añador 'b'
al valor de mode para mejorar la
compatibilidad (es útil hasta en sistemas que no hacen distinciones entre
ficheros de texto y binarios, pues sirve de documentación).
El argumento opcional bufsize especifica el tamaño de
tampón deseado: 0 significa sin tampón, 1 indica tampón de líneas y
cualquier otro valor positivo especifica el tamaño del tampón a usar
(aproximado). Un bufsize negativo indica que se ha de usar
el valor predeterminado por el sistema, que suele ser tampón de líneas
para los dispositivos tty y tampón completo para otros ficheros. Si
se omite, se usa el valor predeterminado del
sistema2.10.
ord('a')
devuelve el entero 97
,
ord(u'
u2020')
devuelve 8224
. Es la inversa de
chr() para cadenas y la de unichr() para caracteres
Unicode.
pow(x, y) % z
).
Los argumentos deben ser de tipo numérico. Si los tipos son mixtos,
se aplican las reglas de operadores binarios aritméticos habituales.
El tipo de operando efectivo coincide con el del resultado. Si el
resultado no es expresable en este tipo, se lanzará una excepción,
por lo que, por ejemplo, no está permitido pow(2, -1)
ni pow(2, 35000)
.
1
. Si se omite el argumento start
toma un valor de 0
. La forma completa devuelve una lista de enteros
normales [start, start + step,
start + 2 * step, ...]
. Si step es positivo,
el último elemento es el mayor valor start + i *
step
menor que stop; si step es negativo,
el último elemento es el mayor valor start + i * step
mayor que stop. step no debe ser cero (o se lanza
ValueError). Por ejemplo:
>>> range(10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> range(1, 11) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> range(0, 30, 5) [0, 5, 10, 15, 20, 25] >>> range(0, 10, 3) [0, 3, 6, 9] >>> range(0, -10, -1) [0, -1, -2, -3, -4, -5, -6, -7, -8, -9] >>> range(0) [] >>> range(1, 0) []
>>> s = raw_input('--> ') --> Monty Python's Flying Circus >>> s "Monty Python's Flying Circus"
Si se ha cargado el módulo readline, raw_input() lo utilizará para proporcionar edición compleja de línea e histórico de órdenes.
reduce(lambda x, y: x+y, [1, 2, 3, 4, 5])
calcula
((((1+2)+3)+4)+5)
.
Si se proporciona el parámetro opcional initializer, se coloca a la
izquierda de los elementos de la secuencia antes de iniciar los cálculos y
sirve como valor por defecto si la secuencia está vacía.
Hay que observar ciertos detalles:
Si un módulo es correcto sintácticamente pero falla su inicialización,
el primer import que se haga no enlaza su nombre localmente,
sino que guarda un módulo (parcialmente inicializado) en
sys.modules
. Para recargar el módulo, hay que volver a
importarlo (lo que enlazará el nombre localmente al módulo parcialemente
inicializado) antes de poder recargarlo con reload().
Al recargar un módulo, su diccionario (que contiene las variables globales del módulo) se mantiene. Las redefiniciones de los nombres sobreescribirán las antiguas definiciones, por lo que esto nu suele suponer un problema. Si al nueva versión de un módulo no define un nombre que definía la versión anterior, la definición antigua permanece en memoria. Esta característica se puede utilizar si el módulo mantiene una tabla global o caché de objetos, pues una sentencia try puede comprobar la presencia de la tabla y saltarse la inicialización si se desea.
Es legal, aunque no suele ser muy útil, recargar módulos internos o de carga dinámica, salvo sys, __main__ y __builtin__. En muchos casos los módulos de extensión no están diseñados para ser inicializados más de una vez y pueden fallar de manera arbitraria si se recargan.
Si un módulo importa objetos de otro módulo con from ... import ..., llamar a reload() del otro módulo no redefine los objetos importados de éste. Una manera de saltarse esto es re-ejecutar la sentencia from, otra es usar import y nombres cualificados (module.name).
Si un módulo genera instancias de una clase, recargar el módulo que define la clase no afecta a las definiciones de métodos de las instancias, que seguirán utilizando la definición antigua. Lo mismo ocurre en el caso de clases derivadas.
round(0.5)
es 1.0
y round(-0.5)
es -1.0
).
setattr(x, 'foobar', 123)
equivale a
x.foobar = 123
.
range(start, stop, step)
. Los argumentos
start y step toman el valor por omisión de None. Los objetos
corte tienen atributos de sólo lectura start, stop y
step que se limitan a devolver los valores de los argumentos
(o su valor por defecto). No tienen ninguna otra funcionalidad explícita,
pero son utilizados por Numerical Python
(la extensión de cálculo matricial) y otras extensiones de terceros. Los objetos
corte resultan también como producto de la sintaxis de corte extendida:
"a[start:stop:step]" o "a[start:stop, i]".
repr(object)
es que str(object)
no intenta
devolver una cadena que acepte eval(), su objetivo es devolver
una cadena imprimible.
tuple('abc')
devuelve
('a', 'b', 'c')
y tuple([1, 2, 3])
devuelve
(1, 2, 3)
.
>>> import types >>> if type(x) == types.StringType: print "Es una cadena"
unichr(97)
devuelve la cadena u'a'
.
Es la función inversa de ord() para cadenas Unicode.
El argumento debe estar en el rango [0..65535], ambos incluidos. En caso
contrario, se lanza ValueError.
Nuevo en la versión 2.0.
None
. Con una sola
secuencia como argumento, devuelve una lista de tuplas de un solo elemento.
Nuevo en la versión 2.0.