Funciones Built-in

El intérprete de Python tiene una serie de funciones y tipos incluidos en él que están siempre disponibles. Están listados aquí en orden alfabético.

Funciones Built-in

abs(x)

Retorna el valor absoluto de un número. El argumento puede ser un número entero, un número de coma flotante o un objeto que implemente __abs__(). Si el argumento es un número complejo, se retorna su magnitud.

aiter(async_iterable)

Return an asynchronous iterator for an asynchronous iterable. Equivalent to calling x.__aiter__().

aiter(x) itself has an __aiter__() method that returns x, so aiter(aiter(x)) is the same as aiter(x).

Note: Unlike iter(), aiter() has no 2-argument variant.

Nuevo en la versión 3.10.

all(iterable)

Retorna True si todos los elementos del iterable son verdaderos (o si el iterable está vacío). Equivalente a:

def all(iterable):
    for element in iterable:
        if not element:
            return False
    return True
awaitable anext(async_iterator[, default])

When awaited, return the next item from the given asynchronous iterator, or default if given and the iterator is exhausted.

This is the async variant of the next() builtin, and behaves similarly.

This calls the __anext__() method of async_iterator, returning an awaitable. Awaiting this returns the next value of the iterator. If default is given, it is returned if the iterator is exhausted, otherwise StopAsyncIteration is raised.

Nuevo en la versión 3.10.

any(iterable)

Retorna True si un elemento cualquiera del iterable es verdadero. Si el iterable está vacío, retorna False. Equivalente a:

def any(iterable):
    for element in iterable:
        if element:
            return True
    return False
ascii(object)

As repr(), return a string containing a printable representation of an object, but escape the non-ASCII characters in the string returned by repr() using \x, \u, or \U escapes. This generates a string similar to that returned by repr() in Python 2.

bin(x)

Convierte un número entero a una cadena binaria con prefijo «0b». El resultado es una expresión de Python válida. Si x no es un objeto de clase int en Python, tiene que definir un método __index__() que retorne un entero. Algunos ejemplos:

>>> bin(3)
'0b11'
>>> bin(-10)
'-0b1010'

If the prefix «0b» is desired or not, you can use either of the following ways.

>>> format(14, '#b'), format(14, 'b')
('0b1110', '1110')
>>> f'{14:#b}', f'{14:b}'
('0b1110', '1110')

Véase también format() para más información.

class bool([x])

Return a Boolean value, i.e. one of True or False. x is converted using the standard truth testing procedure. If x is false or omitted, this returns False; otherwise, it returns True. The bool class is a subclass of int (see Tipos numéricos — int, float, complex). It cannot be subclassed further. Its only instances are False and True (see Valores booleanos).

Distinto en la versión 3.7: x es ahora un argumento solo de posición.

breakpoint(*args, **kws)

Esta función te lleva al depurador en el sitio donde se produce la llamada. Específicamente, llama a sys.breakpointhook(), pasando args y kws directamente. Por defecto, sys.breakpointhook() llama a pdb.set_trace() sin esperar argumentos. En este caso, es puramente una función de conveniencia para evitar el importe explícito de pdb o tener que escribir tanto código para entrar al depurador. Sin embargo, sys.breakpointhook() puede ser configurado a otra función y breakpoint() llamará automáticamente a esta, permitiendo entrar al depurador elegido.

Lanza un evento de auditoría builtins.breakpoint con breakpointhook como argumento.

Nuevo en la versión 3.7.

class bytearray([source[, encoding[, errors]]])

Retorna un nuevo array de bytes. La clase bytearray es una secuencia mutable de enteros en el rango 0 <= x < 256. Tiene la mayoría de los métodos comunes en las secuencias mutables, descritos en Tipos de secuencia mutables, así como la mayoría de los métodos que la clase bytes tiene, véase Operaciones de bytes y bytearray.

El parámetro opcional source puede ser empleado para inicializar el vector (array) de varias maneras distintas:

  • Si es una string, debes proporcionar también el parámetro encoding (y opcionalmente, errors; entonces bytearray() convierte la cadena a bytes empleando str.encode().

  • Si es un integer, el array tendrá ese tamaño y será inicializado con bytes nulos.

  • Si es un objeto conforme a interfaz de búfer, se utilizará un búfer de solo lectura del objeto para inicializar el arreglo de bytes.

  • Si es un iterable, debe ser un iterable de enteros en el rango 0 <= x < 256, que son usados como los contenidos iniciales del array.

Sin argumento, se crea un array de tamaño 0.

Ver también: Tipos de secuencias binarias — bytes, bytearray y memoryview y Objetos de tipo Bytearray.

class bytes([source[, encoding[, errors]]])

Return a new «bytes» object which is an immutable sequence of integers in the range 0 <= x < 256. bytes is an immutable version of bytearray – it has the same non-mutating methods and the same indexing and slicing behavior.

En consecuencia, los argumentos del constructor son interpretados como los de bytearray().

Los objetos de bytes también pueden ser creados con literales, ver Literales de cadenas y bytes.

Ver también Tipos de secuencias binarias — bytes, bytearray y memoryview, Objetos de tipo Bytes, y Operaciones de bytes y bytearray.

callable(object)

Retorna True si el argumento object parece invocable, y False sino. Si retorna True, aun es posible que la invocación falle, pero si es False, invocar el object no funcionará nunca. Hay que tener en cuenta que las clases son invocables (ya que llamarlas retorna una instancia nueva); y que las instancias lo serán si su clase tiene un método __call__().

Nuevo en la versión 3.2: Está función fue eliminada en Python 3.0 pero traída de vuelta en Python 3.2.

chr(i)

Retorna la cadena que representa un carácter cuyo código Unicode es el entero i. Por ejemplo, chr(97) retorna la cadena ’a’, mientras que chr(8364) retorna la cadena ’€’. Esta función es la inversa de ord().

El rango válido para el argumento i es desde 0 a 1,114,111 (0x10FFFF en base 16). Se lanzará una excepción ValueError si i está fuera de ese rango.

@classmethod

Transforma un método en un método de clase.

A class method receives the class as an implicit first argument, just like an instance method receives the instance. To declare a class method, use this idiom:

class C:
    @classmethod
    def f(cls, arg1, arg2, ...): ...

La forma @classmethod es una función decorator — ver Definiciones de funciones para más detalles.

Un método de clase puede ser llamado en la clase (como C.f()) o en la instancia (como C().f()). La instancia es ignorada salvo por su clase. Si un método de clase es llamado desde una clase derivada, entonces el objeto de la clase derivada se pasa como primer argumento implícito.

Los métodos de clase son diferentes a los métodos estáticos de C++ o Java. Si los desea, consulte staticmethod() en esta sección. Para obtener más información sobre los métodos de clase, consulte Jerarquía de tipos estándar.

Distinto en la versión 3.9: Los métodos de clase ahora pueden envolver otros descriptores como property().

Distinto en la versión 3.10: Class methods now inherit the method attributes (__module__, __name__, __qualname__, __doc__ and __annotations__) and have a new __wrapped__ attribute.

compile(source, filename, mode, flags=0, dont_inherit=False, optimize=- 1)

Compila el source en código o en un objeto AST (Abstract Syntax Tree, árbol de sintaxis abstracta). Los objetos código pueden ser ejecutados por las funciones exec() or eval(). source puede ser una cadena normal, una cadena de bytes o un objeto AST. Para más información sobre cómo trabajar con objetos AST, revisa la documentación del módulo ast.

El argumento filename debería dar el fichero desde el que el código fue leído; pasará un valor reconocible en caso este no fuera leído de un fichero (’<string>’ es usado comúnmente para esto).

El argumento mode especifica que tipo de código debe ser compilado; puede ser ’exec’ si source consiste en una secuencia de declaraciones, ’eval’ si consiste de una expresión sencilla, o ’single’ si consiste en una declaración única interactiva (en este último caso, las declaraciones de expresiones que evalúen a algo distinto de None serán impresas).

Los argumentos opcionales flags y dont_inherit controlan qué opciones del compilador deben activarse y cuáles características futuras deben permitirse. Si ninguno está presente (o ambos son cero), el código se compila con los mismos flags que afectan al código que llama compile(). Si se proporciona el argumento flags y dont_inherit no es (o es cero), las opciones del compilador y las declaraciones futuras especificadas por el argumento flags se utilizan además de las que se utilizarían de todos modos. Si dont_inherit es un número entero distinto de cero, entonces el argumento flags lo es: los indicadores (características futuras y opciones del compilador) en el código circundante se ignoran.

Las opciones del compilador y las declaraciones futuras se especifican mediante bits que pueden combinarse mediante OR bit a bit para especificar varias opciones. El campo de bits requerido para especificar una característica futura dada se puede encontrar como el atributo compiler_flag en la instancia _Feature en el módulo __future__. Las flags del compilador se pueden encontrar en el módulo ast, con el prefijo PyCF_.

El argumento optimize especifica el nivel de optimización del compilador; el valor por defecto de -1 selecciona el nivel de optimización del intérprete de la misma forma que las opciones -O. Los niveles explícitos son 0 (sin optimización; __debug__ es true), 1 (se eliminan los asserts, __debug__ es false) or 2 (las docstrings también son eliminadas).

Esta función lanza un SyntaxError si el código compilado es inválido, y un ValueError si contiene bytes nulos.

Si quieres transformar código Python a su representación AST, revisa ast.parse().

Lanza un evento de auditoría compile con argumentos source, filename.

Nota

Cuando se compile una cadena multilínea de código en los modos ’single’ o ’eval’, la entrada debe terminar con un carácter de nueva línea como mínimo. Esto facilita la detección de declaraciones completas e incompletas en el módulo code.

Advertencia

Con una cadena lo suficientemente larga o compleja, al compilar a un objeto AST es posible que el intérprete de Python pare inesperadamente debido a las limitaciones de la profundidad de la pila en el compilador del AST de Python.

Distinto en la versión 3.2: Allowed use of Windows and Mac newlines. Also, input in 'exec' mode does not have to end in a newline anymore. Added the optimize parameter.

Distinto en la versión 3.5: Anteriormente, un TypeError era lanzado cuando se encontraban bytes nulos en source.

Nuevo en la versión 3.8: ast.PyCF_ALLOW_TOP_LEVEL_AWAIT puede ahora ser pasado en flags para permitir el soporte de await, async for, y async with en niveles superiores.

class complex([real[, imag]])

Retorna el número complejo con el valor real + imag*1j o convierte una cadena o un número a un número complejo. Si el primer parámetro es una cadena, será interpretada como un número complejo y la función debe ser llamada sin un segundo parámetro. El segundo parámetro nunca puede ser una cadena. Cada argumento puede ser de cualquier tipo numérico (incluyendo complex). Si se omite imag, su valor por defecto es cero y el constructor sirve como un conversor numérico como int y float. Si ambos argumentos son omitidos, retorna 0j.

Para un objeto general de Python x, complex(x) delega a x.__complex__(). Si __complex__() no está definida, entonces llama a __float__(). Si __float__() no está definida, entonces llama a __index__().

Nota

Cuando se convierte desde una cadena, la cadena no debe contener espacios en blanco alrededor de los operadores centrales + or -. Por ejemplo, complex(‘1+2j’) es correcto, pero complex(‘1 + 2j’) lanza ValueError.

El tipo complejo está descrito en Tipos numéricos — int, float, complex.

Distinto en la versión 3.6: Agrupar dígitos con guiones bajos como en los literales de código está permitido.

Distinto en la versión 3.8: Recurre a __index__() si __complex__() y __float__() no están definidos.

delattr(object, name)

Esta función está emparentada con setattr(). Los argumentos son un objeto y una cadena. La cadena debe ser el mismo nombre que alguno de los atributos del objeto. La función elimina el atributo nombrado, si es que el objeto lo permite. Por ejemplo delattr(x, ‘foobar’) es equivalente a del x.foobar.

class dict(**kwarg)
class dict(mapping, **kwarg)
class dict(iterable, **kwarg)

Crea un nuevo diccionario. El objeto dict es la clase diccionario. Véase dict y Tipos Mapa — dict para más información sobre esta clase.

Para otros contenedores véase las clases incorporadas (built-in) list, set, y tuple, así como el módulo collections.

dir([object])

Sin argumentos, retorna la lista de nombres en el ámbito local. Con un argumento, intenta retornar una lista de atributos válidos para ese objeto.

Si el objeto tiene un método llamado __dir__(), éste será llamado y debe retornar la lista de atributos. Esto permite que los objetos que implementan una función personalizada __getattr__() o __getattribute__() puedan decidir la manera en la que dir() reporta sus atributos.

If the object does not provide __dir__(), the function tries its best to gather information from the object’s __dict__ attribute, if defined, and from its type object. The resulting list is not necessarily complete and may be inaccurate when the object has a custom __getattr__().

El mecanismo por defecto de dir() se comporta de forma distinta con diferentes tipos de objeto, ya que intenta producir la información más relevante en vez de la más completa:

  • Si el objeto es un módulo, la lista contiene los nombres de los atributos del módulo.

  • Si el objeto es un tipo o una clase, la lista contiene los nombres de sus atributos, y recursivamente la de los atributos de sus clases base.

  • En cualquier otro caso, la lista contiene los nombres de los atributos del objeto, los nombres de los atributos de su clase, y recursivamente los atributos de sus clases base.

La lista resultante está ordenada alfabéticamente. Por ejemplo:

>>> import struct
>>> dir()   # show the names in the module namespace  
['__builtins__', '__name__', 'struct']
>>> dir(struct)   # show the names in the struct module 
['Struct', '__all__', '__builtins__', '__cached__', '__doc__', '__file__',
 '__initializing__', '__loader__', '__name__', '__package__',
 '_clearcache', 'calcsize', 'error', 'pack', 'pack_into',
 'unpack', 'unpack_from']
>>> class Shape:
...     def __dir__(self):
...         return ['area', 'perimeter', 'location']
>>> s = Shape()
>>> dir(s)
['area', 'location', 'perimeter']

Nota

Ya que dir() se ofrece como una herramienta para uso en una terminal de forma interactiva, intenta ofrecer un grupo interesante de nombres más que un uno rigurosamente definido, y su comportamiento detallado puede cambiar entre versiones. Por ejemplo, los atributos de metaclase no están en la lista resultante cuando el argumento es una clase.

divmod(a, b)

Take two (non-complex) numbers as arguments and return a pair of numbers consisting of their quotient and remainder when using integer division. With mixed operand types, the rules for binary arithmetic operators apply. For integers, the result is the same as (a // b, a % b). For floating point numbers the result is (q, a % b), where q is usually math.floor(a / b) but may be 1 less than that. In any case q * b + a % b is very close to a, if a % b is non-zero it has the same sign as b, and 0 <= abs(a % b) < abs(b).

enumerate(iterable, start=0)

Retorna un objeto enumerador. iterable tiene que ser una secuencia, un iterator, o algún otro objeto que soporte la iteración. El método __next__() del iterador retornado por la función enumerate() retorna una tupla que contiene un contador (desde start, cuyo valor por defecto es 0) y los valores obtenidos al iterar sobre iterable.

>>> seasons = ['Spring', 'Summer', 'Fall', 'Winter']
>>> list(enumerate(seasons))
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
>>> list(enumerate(seasons, start=1))
[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]

Equivalente a:

def enumerate(sequence, start=0):
    n = start
    for elem in sequence:
        yield n, elem
        n += 1
eval(expression[, globals[, locals]])

Los argumentos son una cadena y opcionalmente, globales y locales. Si se introduce, globals tiene que ser un diccionario, y locals puede ser cualquier objeto de mapeo.

The expression argument is parsed and evaluated as a Python expression (technically speaking, a condition list) using the globals and locals dictionaries as global and local namespace. If the globals dictionary is present and does not contain a value for the key __builtins__, a reference to the dictionary of the built-in module builtins is inserted under that key before expression is parsed. That way you can control what builtins are available to the executed code by inserting your own __builtins__ dictionary into globals before passing it to eval(). If the locals dictionary is omitted it defaults to the globals dictionary. If both dictionaries are omitted, the expression is executed with the globals and locals in the environment where eval() is called. Note, eval() does not have access to the nested scopes (non-locals) in the enclosing environment.

El valor que retorna es el resultado de la expresión evaluada. Los errores de sintaxis son reportados como excepciones. Por ejemplo:

>>> x = 1
>>> eval('x+1')
2

This function can also be used to execute arbitrary code objects (such as those created by compile()). In this case, pass a code object instead of a string. If the code object has been compiled with 'exec' as the mode argument, eval()'s return value will be None.

Hints: dynamic execution of statements is supported by the exec() function. The globals() and locals() functions return the current global and local dictionary, respectively, which may be useful to pass around for use by eval() or exec().

If the given source is a string, then leading and trailing spaces and tabs are stripped.

Véase ast.literal_eval(), una función que puede evaluar de forma segura cadenas con expresiones que contienen solo literales.

Lanza un evento de auditoría exec con un argumento code_object.

exec(object[, globals[, locals]])

Esta función admite la ejecución dinámica de código Python. object debe ser una cadena de caracteres o un objeto código. Si es una cadena de caracteres, la cadena de caracteres se analiza como un conjunto de declaraciones de Python que luego se ejecuta (a menos que ocurra un error de sintaxis). 1 Si es un objeto código, simplemente se ejecuta. En todos los casos, se espera que el código que se ejecuta sea válido como entrada de archivo (consulte la sección «Archivo de Entrada» en el Manual de referencia). Tenga en cuenta que las declaraciones nonlocal, yield y return no se pueden utilizar fuera de las definiciones de función, incluso dentro del contexto del código pasado a la función exec() . El valor de retorno es None.

In all cases, if the optional parts are omitted, the code is executed in the current scope. If only globals is provided, it must be a dictionary (and not a subclass of dictionary), which will be used for both the global and the local variables. If globals and locals are given, they are used for the global and local variables, respectively. If provided, locals can be any mapping object. Remember that at the module level, globals and locals are the same dictionary. If exec gets two separate objects as globals and locals, the code will be executed as if it were embedded in a class definition.

Si el diccionario globals no contiene un valor para la clave __builtins__, una referencia al diccionario del módulo built-in builtins se inserta bajo esa clave. De esta forma puedes controlar que builtins están disponibles para el código ejecutado insertando tu propio diccionario __builtins__ en globals antes de pasárselo a exec().

Lanza un evento de auditoría exec con un argumento code_object.

Nota

Las funciones built-in globals() y locals() Retornan el diccionario local y global actual, respectivamente, lo que puede ser útil para pasarlo y emplearlo como el segundo y el tercer argumento de exec().

Nota

El locals por defecto actúa de la forma descrita para la función locals() más abajo: no se deben intentar modificaciones sobre el diccionario locals por defecto. Pasa un diccionario explícito locals si necesitas ver los efectos del código en locals después de que la función exec() retorne.

filter(function, iterable)

Construye un iterador a partir de aquellos elementos de iterable para los cuales function retorna true. iterable puede ser una secuencia, un contenedor que soporta iteración, o un iterador. Si function es None, se asume la función identidad, es decir, todos los elementos de iterable que son false son eliminados.

Ten en cuenta que filter(function, iterable) es equivalente a la expresión de un generador (item for item in iterable if function(item)) si function no es None y a (item for item in iterable if item) si function es None.

Ver itertools.filterfalse() para la función complementaria que retorna los elementos de iterable para los cuales function retorna false.

class float([x])

Retorna un número de punto flotante construido a partir de un número o una cadena x.

If the argument is a string, it should contain a decimal number, optionally preceded by a sign, and optionally embedded in whitespace. The optional sign may be '+' or '-'; a '+' sign has no effect on the value produced. The argument may also be a string representing a NaN (not-a-number), or positive or negative infinity. More precisely, the input must conform to the following grammar after leading and trailing whitespace characters are removed:

sign           ::=  "+" | "-"
infinity       ::=  "Infinity" | "inf"
nan            ::=  "nan"
numeric_value  ::=  floatnumber | infinity | nan
numeric_string ::=  [sign] numeric_value

Here floatnumber is the form of a Python floating-point literal, described in Literales de punto flotante. Case is not significant, so, for example, «inf», «Inf», «INFINITY», and «iNfINity» are all acceptable spellings for positive infinity.

Sino, en caso de que el argumento sea un entero o un decimal de punto flotante, se retorna un número de punto flotante del mismo valor (dentro de la precisión de punto flotante de Python). Si el argumento está fuera del rango de un punto flotante de Python, se generará una excepción OverflowError.

Para el objeto general de Python x, float(x) delega a x.__float__(). Si __float__() no está definido entonces recurre a __index__().

Si no se le da un argumento, retorna 0.0.

Ejemplos:

>>> float('+1.23')
1.23
>>> float('   -12345\n')
-12345.0
>>> float('1e-003')
0.001
>>> float('+1E6')
1000000.0
>>> float('-Infinity')
-inf

El tipo float está descrito en Tipos numéricos — int, float, complex.

Distinto en la versión 3.6: Agrupar dígitos con guiones bajos como en los literales de código está permitido.

Distinto en la versión 3.7: x es ahora un argumento solo de posición.

Distinto en la versión 3.8: Recurre a __index__() si __float__() no está definido.

format(value[, format_spec])

Convert a value to a «formatted» representation, as controlled by format_spec. The interpretation of format_spec will depend on the type of the value argument; however, there is a standard formatting syntax that is used by most built-in types: Especificación de formato Mini-Lenguaje.

El format_spec por defecto es una cadena vacía que normalmente produce el mismo efecto que llamar a str(value).

Una llamada a format(value, format_spec) se traduce a type(value).__format__(value, format_spec) , que sortea el diccionario de la instancia cuando busca por el método __format__() del valor. Una excepción TypeError será lanzada si la búsqueda del método llega a object y format_spec no está vacío, o si format_spec o el valor de retorno no son cadenas.

Distinto en la versión 3.4: object().__format__(format_spec) lanza TypeError si format_spec no es una cadena vacía.

class frozenset([iterable])

Retorna un nuevo objeto frozenset , opcionalmente con elementos tomados de iterable. frozenset es una clase built-in. Ver frozenset y Conjuntos — set, frozenset para documentación sobre esta clase.

Para otro tipo de contenedores, ver las clases built-in set, list, tuple, y dict, así como el módulo collections.

getattr(object, name[, default])

Retorna el valor del atributo nombrado de object. name debe ser una cadena. Si la cadena es el nombre de uno de los atributos del objeto, el resultado es el valor de ese atributo. Por ejemplo, getattr(x, ‘foobar’) es equivalente a x.foobar. Si el atributo nombrado no existe, se retorna default si ha sido proporcionado como argumento, y sino se lanza una excepción AttributeError.

Nota

Since private name mangling happens at compilation time, one must manually mangle a private attribute’s (attributes with two leading underscores) name in order to retrieve it with getattr().

globals()

Retorna un diccionario que representa la tabla global de símbolos. Es siempre el diccionario del módulo actual (dentro de una función o método, este es el módulo donde está definida, no el módulo desde el que es llamada).

hasattr(object, name)

Los argumentos son un objeto y una cadena. El resultado es True si la cadena es el nombre de uno de los atributos del objeto, y False en caso contrario. (Está implementado mediante una llamada a getattr(object, name) que comprueba si se lanza una excepción AttributeError o no).

hash(object)

Retorna el valor hash del objeto (si tiene uno). Los valores hash son enteros. Se usan para comparar de forma rápida claves de diccionarios durante las operaciones de búsqueda. Valores numéricos que son iguales tienen el mismo valor hash (incluso si son de tipos diferentes, como es el caso para 1 y 1.0).

Nota

Para objetos que implementan métodos __hash__(), ten en cuenta que hash() trunca el valor de retorno en base a la tasa de bits de la máquina host. Ver __hash__() para más detalles.

help([object])

Invoca el sistema de ayuda integrado (built-in). (Esta función está indicada para su uso interactivo). Si no se le da argumento, el sistema interactivo de ayuda se inicia en la consola del intérprete. Si el argumento es una cadena, entonces es buscada como nombre de un módulo, función, clase, método, palabra clave o tema de documentación, y una página de ayuda es impresa en la consola. Si el argumento es cualquier otro tipo de objeto, una página de ayuda sobre el objeto es generada.

Note that if a slash(/) appears in the parameter list of a function when invoking help(), it means that the parameters prior to the slash are positional-only. For more info, see the FAQ entry on positional-only parameters.

Esta función se añade al espacio de nombres built-in a través del módulo site.

Distinto en la versión 3.4: Cambios a los módulos pydoc y inspect implican que las signaturas reportadas para objetos invocables son más completas y consistentes.

hex(x)

Convierte un número entero a una cadena hexadecimal de minúsculas con el prefijo «0x». Si x no es un objeto de la clase Python int, tiene que definir un método __index__() que retorne un entero. Algunos ejemplos:

>>> hex(255)
'0xff'
>>> hex(-42)
'-0x2a'

Si quieres convertir un número entero a una cadena hexadecimal de mayúsculas o minúsculas con prefijo o sin el, puedes usar cualquiera de las siguientes formas:

>>> '%#x' % 255, '%x' % 255, '%X' % 255
('0xff', 'ff', 'FF')
>>> format(255, '#x'), format(255, 'x'), format(255, 'X')
('0xff', 'ff', 'FF')
>>> f'{255:#x}', f'{255:x}', f'{255:X}'
('0xff', 'ff', 'FF')

Véase también format() para más información.

Ver también int() para convertir una cadena hexadecimal a un entero usando una base de 16.

Nota

Para obtener una cadena hexadecimal que represente un punto flotante, utiliza el método float.hex().

id(object)

Retorna la «identidad» de un objeto. Esto es un entero que está garantizado que es único y constante para este objeto durante toda su existencia. Dos objetos con existencias en el tiempo que no coincidan pueden tener el mismo valor de id().

CPython implementation detail: This is the address of the object in memory.

Lanza un evento de auditoría builtins.id con el argumento id.

input([prompt])

Si el argumento prompt está presente, se escribe a la salida estándar sin una nueva línea a continuación. La función lee entonces una línea de la entrada, la convierte en una cadena (eliminando la nueva línea), y retorna eso. Cuando se lee EOF, se lanza una excepción EOFError. Ejemplo:

>>> s = input('--> ')  
--> Monty Python's Flying Circus
>>> s  
"Monty Python's Flying Circus"

Si el módulo readline estaba cargado, entonces input() lo usará para proporcionar características más elaboradas de edición de líneas e historiales.

Lanza un evento de auditoría builtins.input con el argumento prompt.

Lanza un evento de auditoría builtins.input/result con el resultado justo después de haber leído con éxito la entrada.

class int([x])
class int(x, base=10)

Retorna un objeto entero construido desde un número o cadena x, o retorna 0 si no se le proporcionan argumentos. Si x define __int__(), int(x) retorna x.__int__(). Si x define __index__(), retorna x.__index__(). Si x define __trunc__(), retorna x.__trunc__(). Para números de punto flotante, los valores serán truncados hacia cero.

Si x no es un número o si se indica base, entonces x debe ser una cadena, una instancia de bytes, o una de bytearray que representa un integer literal de base base. Opcionalmente, el literal puede ser precedido de + or - (sin espacios entre el número y el signo) y rodeados por espacio en blanco. Un literal de base-n consiste en los dígitos de 0 a n-1, con valores entre 10 y 35 para los caracteres de a a z (o de A a Z). La base por defecto es 10. Los valores permitidos son 0 y 2–36. Los literales de base-2, -8 y -16 pueden incluir opcionalmente un prefijo 0b/0B, 0o/0O, o 0x/0X, de igual forma que los literales enteros en el código. Base-0 indica que se debe interpretar exactamente como un literal de código, de forma que la base real es 2, 8, 10 o 16, y que int('010', 0) no sea legal, mientras que int('010') sí lo es, así como int('010', 8).

El tipo entero se describe en Tipos numéricos — int, float, complex.

Distinto en la versión 3.4: Si base no es una instancia de int y el objeto base tiene un método base.__index__, ese método es llamado para obtener un entero para esa base. En versiones anteriores se empleaba base.__int__ en vez de base.__index__.

Distinto en la versión 3.6: Agrupar dígitos con guiones bajos como en los literales de código está permitido.

Distinto en la versión 3.7: x es ahora un argumento solo de posición.

Distinto en la versión 3.8: Recurre a __index__() si no está definido __int__().

isinstance(object, classinfo)

Return True if the object argument is an instance of the classinfo argument, or of a (direct, indirect, or virtual) subclass thereof. If object is not an object of the given type, the function always returns False. If classinfo is a tuple of type objects (or recursively, other such tuples) or a Union Type of multiple types, return True if object is an instance of any of the types. If classinfo is not a type or tuple of types and such tuples, a TypeError exception is raised.

Distinto en la versión 3.10: classinfo can be a Union Type.

issubclass(class, classinfo)

Return True if class is a subclass (direct, indirect, or virtual) of classinfo. A class is considered a subclass of itself. classinfo may be a tuple of class objects or a Union Type, in which case return True if class is a subclass of any entry in classinfo. In any other case, a TypeError exception is raised.

Distinto en la versión 3.10: classinfo can be a Union Type.

iter(object[, sentinel])

Retorna un objeto iterator. El primer argumento se interpreta de forma muy diferente en función de la presencia del segundo. Sin un segundo argumento, object debe ser un objeto collection que soporte el protocolo de iteración (el método __iter__()), o debe soportar el protocolo de secuencia (el método __getitem__() con argumentos enteros comenzando en 0). Si no soporta ninguno de esos protocolos, se lanza una excepción TypeError. Si el segundo argumento, sentinel, es indicado, entonces object debe ser un objeto invocable. El iterador creado en ese caso llamará a object sin argumentos para cada invocación a su método __next__() ; si el valor retornado es igual a sentinel, una StopIteration será lanzada, de lo contrario el valor será retornado.

Ver también Tipos de iteradores.

Una aplicación muy útil de la segunda forma de iter() es la construcción de un lector de bloques. Por ejemplo, leer bloques de ancho fijo de una base de datos binaria hasta que el fin del fichero sea alcanzado:

from functools import partial
with open('mydata.db', 'rb') as f:
    for block in iter(partial(f.read, 64), b''):
        process_block(block)
len(s)

Retorna el tamaño (el número de elementos) de un objeto. El argumento puede ser una secuencia (como una cadena, un objeto byte, una tupla, lista o rango) o una colección (como un diccionario, un set o un frozen set).

CPython implementation detail: len aumenta OverflowError en longitudes mayores que sys.maxsize, como range(2 ** 100).

class list([iterable])

Más que una función, list es realmente un tipo de secuencia mutable, como está documentado en Listas y Tipos secuencia — list, tuple, range.

locals()

Actualiza y retorna un diccionario representando la tabla de símbolos locales actual. Las variables libres son retornadas por locals() cuando ésta es llamada en bloques de funciones, pero no en bloques de clases. Nótese que a nivel de módulo, locals() y globals() son el mismo diccionario.

Nota

Los contenidos de este diccionario no deben ser modificados; sus cambios no afectarán los valores de las variables locales y libres utilizadas por el intérprete.

map(function, iterable, ...)

Retorna un iterador que aplica function a cada elemento de iterable, retornando el resultado. Si se le pasan argumentos adicionales de tipo iterable, function debe tomar la misma cantidad de argumentos y es aplicado a los elementos de todos ellos en paralelo. Con iterables múltiples, el iterador se detiene cuando el iterable más corto se agota. Para casos donde las entradas de la función ya están organizadas como tuplas de argumentos, ver itertools.starmap().

max(iterable, *[, key, default])
max(arg1, arg2, *args[, key])

Retorna el elemento mayor en un iterable o el mayor de dos o más argumentos.

Si un argumento posicional es dado, debe ser un iterable. El elemento mayor en el iterable es retornado. Si dos o más argumentos posicionales son indicados, el mayor de los argumentos posicionales será retornado.

Hay dos argumentos de solo palabra clave que son opcionales. El argumento key especifica una función de ordenación de un sólo argumento, como la usada para list.sort(). El argumento default especifica un objeto a retornar si el iterable proporcionado está vacío. Si el iterable está vacío y default no ha sido indicado, se lanza un ValueError.

Si hay múltiples elementos con el valor máximo, la función retorna el primero que ha encontrado. Esto es consistente con otras herramientas para preservar la estabilidad de la ordenación como sorted(iterable, key=keyfunc, reverse=True)[0] y heapq.nlargest(1, iterable, key=keyfunc).

Nuevo en la versión 3.4: El argumento default sólo por palabra clave.

Distinto en la versión 3.8: key puede ser None.

class memoryview(object)

Retorna un objeto «memory view» creado a partir del argumento indicado. Para más información ver Vistas de memoria.

min(iterable, *[, key, default])
min(arg1, arg2, *args[, key])

Retorna el menor elemento en un iterable o el menor de dos o más argumentos.

Si se le indica un argumento posicional, debe ser un iterable. El menor elemento del iterable es retornado. Si dos o más argumentos posicionales son indicados, el menor de los argumentos posicionales es retornado.

Hay dos argumentos de solo palabra clave que son opcionales. El argumento key especifica una función de ordenación de un sólo argumento, como la usada para list.sort(). El argumento default especifica un objeto a retornar si el iterable proporcionado está vacío. Si el iterable está vacío y default no ha sido indicado, se lanza un ValueError.

Si hay múltiples elementos con el valor mínimo, la función retorna el primero que encuentra. Esto es consistente con otras herramientas que preservan la estabilidad de la ordenación como sorted(iterable, key=keyfunc)[0] y heapq.nsmallest(1, iterable, key=keyfunc).

Nuevo en la versión 3.4: El argumento default sólo por palabra clave.

Distinto en la versión 3.8: key puede ser None.

next(iterator[, default])

Extrae el siguiente elemento de iterator llamando a su método __next__(). Si se le indica default, éste será retornado si se agota el iterador, de lo contrario, se lanza un StopIteration.

class object

Return a new featureless object. object is a base for all classes. It has methods that are common to all instances of Python classes. This function does not accept any arguments.

Nota

object no tiene un __dict__, así que no puedes asignar atributos arbitrarios a una instancia de la clase object.

oct(x)

Convierte un número entero a una cadena octal con prefijo «0o». El resultado es una expresión válida de Python. Si x no es un objeto de la clase Python int, tiene que tener definido un método __index__() que retorne un entero. Por ejemplo:

>>> oct(8)
'0o10'
>>> oct(-56)
'-0o70'

If you want to convert an integer number to an octal string either with the prefix «0o» or not, you can use either of the following ways.

>>> '%#o' % 10, '%o' % 10
('0o12', '12')
>>> format(10, '#o'), format(10, 'o')
('0o12', '12')
>>> f'{10:#o}', f'{10:o}'
('0o12', '12')

Véase también format() para más información.

open(file, mode='r', buffering=- 1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

Abre file y retorna un file object correspondiente. Si el archivo no se puede abrir, se lanza un OSError. Consulte Leyendo y escribiendo archivos para obtener más ejemplos de cómo utilizar esta función.

file is a path-like object giving the pathname (absolute or relative to the current working directory) of the file to be opened or an integer file descriptor of the file to be wrapped. (If a file descriptor is given, it is closed when the returned I/O object is closed unless closefd is set to False.)

mode is an optional string that specifies the mode in which the file is opened. It defaults to 'r' which means open for reading in text mode. Other common values are 'w' for writing (truncating the file if it already exists), 'x' for exclusive creation, and 'a' for appending (which on some Unix systems, means that all writes append to the end of the file regardless of the current seek position). In text mode, if encoding is not specified the encoding used is platform-dependent: locale.getpreferredencoding(False) is called to get the current locale encoding. (For reading and writing raw bytes use binary mode and leave encoding unspecified.) The available modes are:

Carácter

Significado

’r’

abierto para lectura (por defecto)

'w'

abierto para escritura, truncando primero el fichero

'x'

abierto para creación en exclusiva, falla si el fichero ya existe

’a’

open for writing, appending to the end of file if it exists

'b'

modo binario

’t’

modo texto (por defecto)

’+’

abierto para actualizar (lectura y escritura)

The default mode is 'r' (open for reading text, a synonym of 'rt'). Modes 'w+' and 'w+b' open and truncate the file. Modes 'r+' and 'r+b' open the file with no truncation.

Como se menciona en Resumen, Python distingue entre I/O binario y de texto. Los ficheros abiertos en modo binario (incluyendo ’b’ en el argumento mode) retornan su contenido como objetos de bytes sin ninguna descodificación. En modo de texto (por defecto, o cuando se incluye ’t’ en el argumento mode), los contenidos del fichero se retornan como str, tras descodificar los bytes usando una codificación dependiente de plataforma o usando el encoding especificado como argumento.

There is an additional mode character permitted, 'U', which no longer has any effect, and is considered deprecated. It previously enabled universal newlines in text mode, which became the default behavior in Python 3.0. Refer to the documentation of the newline parameter for further details.

Nota

Python no depende de la noción de ficheros de texto del sistema operativo subyacente; todo el procesado lo hace Python, y es por tanto independiente de plataforma.

buffering es un entero opcional que configura la política de buffering. Indica 0 para desactivar el buffering (sólo permitido en modo binario), 1 para seleccionar buffering por línea (sólo para modo texto), y un entero >1 para indicar el tamaño en bytes de un buffer de tamaño fijo. Cuando no se indica el argumento buffering, la norma por defecto de buffering funciona de la siguiente manera:

  • Los ficheros binarios son transmitidos por búferes con tamaños fijos de bloque; el tamaño del búfer es escogido usando un intento heurístico para determinar el tamaño de bloque del dispositivo y recurriendo sino a io.DEFAULT_BUFFER_SIZE. En muchos sistemas, el búfer tendrá normalmente un tamaño de 4096 o 8192 bytes.

  • Los ficheros de texto «interactivos» (ficheros para los cuales isatty() retorna True) usan buffering por líneas. Otros ficheros de texto emplean la norma descrita anteriormente para ficheros binarios.

encoding es el nombre de la codificación empleada con el fichero. Esto solo debe ser usado en el modo texto. La codificación por defecto es dependiente de plataforma (aquello que retorna locale.getpreferredencoding()), pero puede emplearse cualquier text encoding soportado por Python. Véase el módulo codecs para la lista de codificaciones soportadas.

errors es una cadena opcional que especifica como deben manejarse los errores de codificación y descodificación – esto no puede ser usado en modo binario. Están disponibles varios gestores de error (listados en Manejadores de errores), pero también es válido cualquier nombre de gestión de error registrado con codecs.register_error(). Los nombres estándar incluyen:

  • 'strict' para lanzar una excepción ValueError si hay un error de codificación. El valor por defecto, None, produce el mismo efecto.

  • 'ignore' ignora los errores. Nótese que ignorar errores de codificación puede conllevar la pérdida de datos.

  • 'replace' provoca que se inserte un marcador de reemplazo (como '?') en aquellos sitios donde hay datos malformados.

  • 'surrogateescape' will represent any incorrect bytes as low surrogate code units ranging from U+DC80 to U+DCFF. These surrogate code units will then be turned back into the same bytes when the surrogateescape error handler is used when writing data. This is useful for processing files in an unknown encoding.

  • 'xmlcharrefreplace' está soportado solamente cuando se escribe a un fichero. Los caracteres que no estén soportados por la codificación son reemplazados por la referencia al carácter XML apropiado &#nnn;.

  • 'backslashreplace' reemplaza datos malformados con las secuencias de escapes de barra invertida de Python.

  • 'namereplace' reemplaza caracteres no soportados con secuencias de escape \N{...} (y también está sólo soportado en escritura).

newline controla cómo funciona el modo universal newlines (solo aplica a modo texto). Puede ser None, '', '\n', '\r', y '\r\n'. Funciona de la siguiente manera:

  • Cuando se está leyendo entrada desde el flujo, si newline es None, el modo universal newlines es activado. Las líneas en la entrada pueden terminar en '\n', '\r', o '\r\n', y serán traducidas a '\n' antes de ser retornadas a la entidad que llama. Si es '', el modo universal newlines estará activado pero los finales de línea se retornan sin traducir a la entidad que llama. Si tiene cualquiera de los otros valoras válidos, las líneas de entrada estarán terminadas sólo por la cadena dada, y los finales de línea serán retornados sin traducir a la entidad que llama.

  • Cuando se escribe salida al flujo, si newline es None, cualquier carácter '\n' escrito es traducido al separador de línea por defecto en el sistema, os.linesep. Si newline es '' o '\n', entonces no se produce ninguna traducción. Si newline toma cualquiera de los otros valores válidos, entonces cualquier carácter '\n' escrito es traducido a la cadena indicada.

If closefd is False and a file descriptor rather than a filename was given, the underlying file descriptor will be kept open when the file is closed. If a filename is given closefd must be True (the default); otherwise, an error will be raised.

Un abridor personalizado puede emplearse pasando un invocable como opener. El descriptor de fichero del objeto se obtiene llamando a opener con (file, flags). opener debe retornar un descriptor de fichero abierto (pasando os.open como opener resulta en una funcionalidad similar a None).

El nuevo fichero creado es no-heredable.

El siguiente ejemplo emplea el parámetro dir_fd de la función os.open() para abrir un fichero relativo a un directorio dado:

>>> import os
>>> dir_fd = os.open('somedir', os.O_RDONLY)
>>> def opener(path, flags):
...     return os.open(path, flags, dir_fd=dir_fd)
...
>>> with open('spamspam.txt', 'w', opener=opener) as f:
...     print('This will be written to somedir/spamspam.txt', file=f)
...
>>> os.close(dir_fd)  # don't leak a file descriptor

El tipo de file object retornado por la función open() depende del modo. Cuando se emplea open() para abrir un fichero en modo texto ('w', 'r', 'wt', 'rt', etc.), retorna una subclase de io.TextIOBase (específicamente io.TextIOWrapper). Cuando se emplea para abrir un fichero en modo binario con buffering, la clase retornada es una subclase de io.BufferedIOBase. La clase exacta varía: en modo binario de lectura, retorna io.BufferedReader; en modo de escritura y adición en binario, retorna io.BufferedWriter, y en modo de escritura/lectura, retorna io.BufferedRandom. Si el buffering está desactivado, el flujo en crudo, una subclase de io.RawIOBase, io.FileIO, es retornada.

See also the file handling modules, such as fileinput, io (where open() is declared), os, os.path, tempfile, and shutil.

Lanza un evento de auditoría open con los argumentos file, mode, flags.

Los argumentos mode y flags pueden haber sido modificados o inferidos de la llamada original.

Distinto en la versión 3.3:
  • El parámetro opener fue añadido.

  • El modo 'x' fue añadido.

  • IOError era la excepción lanzada anteriormente, ahora es un alias de OSError.

  • Se lanza FileExistsError si ya existe el fichero abierto en modo de creación exclusiva ('x').

Distinto en la versión 3.4:
  • El fichero ahora es no-heredable.

Deprecated since version 3.4, removed in version 3.10: El modo 'U'.

Distinto en la versión 3.5:
  • Si la llamada al sistema es interrumpida y el gestor de señales no lanza una excepción, ahora la función reintenta la llamada de sistema en vez de lanzar una excepción InterruptedError (véase PEP 475 para la justificación).

  • El gestor de errores 'namereplace' fue añadido.

Distinto en la versión 3.6:
  • Añadido el soporte para aceptar objetos que implementan os.PathLike.

  • En Windows, abrir un búfer en la consola puede retornar una subclase de io.RawIOBase en vez de io.FileIO.

ord(c)

Al proporcionarle una cadena representando un carácter Unicode, retorna un entero que representa el código Unicode de ese carácter. Por ejemplo, ord('a') retorna el entero 97 y ord('€') (símbolo del Euro) retorna 8364. Esta es la función inversa de chr().

pow(base, exp[, mod])

Retorna base elevado a exp; si mod está presente, retorna base elevado a exp, módulo mod (calculado de manera más eficiente que pow(base, exp) % mod). La forma con dos argumentos pow(base, exp) es equivalente a usar el operador potencia: base**exp.

The arguments must have numeric types. With mixed operand types, the coercion rules for binary arithmetic operators apply. For int operands, the result has the same type as the operands (after coercion) unless the second argument is negative; in that case, all arguments are converted to float and a float result is delivered. For example, pow(10, 2) returns 100, but pow(10, -2) returns 0.01.

Para operandos int como base y exp, si mod está presente, mod debe ser también de tipo entero y distinto de cero. Si mod está presente y exp es negativo, base debe ser un número primo relativo a mod. En ese caso, se retorna pow(inv_base, -exp, mod), dónde inv_base es la inversa al módulo mod de base.

Aquí tienes un ejemplo de cómo calcular la inversa de 38 módulo 97:

>>> pow(38, -1, mod=97)
23
>>> 23 * 38 % 97 == 1
True

Distinto en la versión 3.8: Para operandos int, la forma de pow con tres argumentos acepta ahora que el segundo argumento sea negativo, lo que permite el cálculo de inversos modulares.

Distinto en la versión 3.8: Permite argumentos de palabra clave. Anteriormente, solo se soportaba el uso de argumentos posicionales.

print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)

Print objects to the text stream file, separated by sep and followed by end. sep, end, file, and flush, if present, must be given as keyword arguments.

Todos los argumentos que no son por palabra clave se convierten a cadenas tal y como str() hace y se escriben al flujo, separados por sep y seguidos por end. Tanto sep como end deben ser cadenas; también pueden ser None, lo cual significa que se empleen los valores por defecto. Si no se indica objects, print() escribirá end.

El argumento file debe ser un objeto que implemente un método write(string); si éste no está presente o es None, se usará sys.stdout. Dado que los argumentos mostrados son convertidos a cadenas de texto, print() no puede ser utilizada con objetos fichero en modo binario. Para esos, utiliza en cambio file.write(…).

Whether the output is buffered is usually determined by file, but if the flush keyword argument is true, the stream is forcibly flushed.

Distinto en la versión 3.3: Añadido el argumento por palabra clave flush.

class property(fget=None, fset=None, fdel=None, doc=None)

Retorna un atributo propiedad.

fget es una función para obtener el valor de un atributo. fset es una función para asignar el valor de un atributo. fdel es una función para eliminar el valor de un atributo. Y doc crea un docstring para el atributo.

Un caso de uso típico es la definición de un atributo gestionado x:

class C:
    def __init__(self):
        self._x = None

    def getx(self):
        return self._x

    def setx(self, value):
        self._x = value

    def delx(self):
        del self._x

    x = property(getx, setx, delx, "I'm the 'x' property.")

If c is an instance of C, c.x will invoke the getter, c.x = value will invoke the setter, and del c.x the deleter.

Si está indicada, doc será la docstring del atributo propiedad. En caso contrario, la propiedad copiará la dosctring de fget si ésta existe. Esto permite crear propiedades de sólo lectura de forma fácil empleando property() como decorator:

class Parrot:
    def __init__(self):
        self._voltage = 100000

    @property
    def voltage(self):
        """Get the current voltage."""
        return self._voltage

El decorador @property convierte el método voltage() en un «getter» para un atributo de sólo lectura con el mismo nombre, y asigna «Get the current voltage.» como la docstring de voltage.

Un objeto propiedad tiene métodos getter, setter, y deleter que pueden usarse como decoradores que crean una copia de la propiedad con su correspondiente función de acceso asignada a la función decorada. Esto se explica mejor con un ejemplo:

class C:
    def __init__(self):
        self._x = None

    @property
    def x(self):
        """I'm the 'x' property."""
        return self._x

    @x.setter
    def x(self, value):
        self._x = value

    @x.deleter
    def x(self):
        del self._x

Este código equivale exactamente al primer ejemplo. Asegúrese de otorgarle a las funciones adicionales el mismo nombre que la propiedad original (x en este caso.)

El objeto propiedad retornado tiene también los atributos fget, fset, y fdel correspondientes a los argumentos del constructor.

Distinto en la versión 3.5: Las docstrings de los objetos propiedad son escribibles.

class range(stop)
class range(start, stop[, step])

range, más que una función, es en realidad un tipo de secuencia inmutable, tal y como está documentado en Rangos y Tipos secuencia — list, tuple, range.

repr(object)

Return a string containing a printable representation of an object. For many types, this function makes an attempt to return a string that would yield an object with the same value when passed to eval(); otherwise, the representation is a string enclosed in angle brackets that contains the name of the type of the object together with additional information often including the name and address of the object. A class can control what this function returns for its instances by defining a __repr__() method.

reversed(seq)

Retorna un iterator reverso. seq debe ser un objeto que tenga un método __reversed__() o que soporte el protocolo de secuencia (el método __len__() y el método __getitem__() con argumentos enteros comenzando en 0).

round(number[, ndigits])

Retorna number redondeado a ndigits de precisión después del punto decimal. Si ndigits es omitido o es None, retorna el entero más cercano a su entrada.

For the built-in types supporting round(), values are rounded to the closest multiple of 10 to the power minus ndigits; if two multiples are equally close, rounding is done toward the even choice (so, for example, both round(0.5) and round(-0.5) are 0, and round(1.5) is 2). Any integer value is valid for ndigits (positive, zero, or negative). The return value is an integer if ndigits is omitted or None. Otherwise, the return value has the same type as number.

Para un objeto number general de Python, round delega a number.__round__.

Nota

El comportamiento de round() para flotantes puede ser sorprendente: por ejemplo, round(2.675, 2) da 2.67 en vez de los 2.68 esperados. Esto no es un error: es el resultado del hecho de que la mayoría de fracciones decimales no se puede representar de forma exacta como flotantes. Véase Aritmética de Punto Flotante: Problemas y Limitaciones para más información.

class set([iterable])

Retorna un nuevo objeto set , opcionalmente con elementos tomados de iterable. set es una clase integrada (built-in). Véase set y Conjuntos — set, frozenset para documentación sobre esta clase.

Para otros contenedores ver las clases integradas (built-in) frozenset, list, tuple, y dict, así como el módulo collections.

setattr(object, name, value)

This is the counterpart of getattr(). The arguments are an object, a string, and an arbitrary value. The string may name an existing attribute or a new attribute. The function assigns the value to the attribute, provided the object allows it. For example, setattr(x, 'foobar', 123) is equivalent to x.foobar = 123.

Nota

Since private name mangling happens at compilation time, one must manually mangle a private attribute’s (attributes with two leading underscores) name in order to set it with setattr().

class slice(stop)
class slice(start, stop[, step])

Return a slice object representing the set of indices specified by range(start, stop, step). The start and step arguments default to None. Slice objects have read-only data attributes start, stop, and step which merely return the argument values (or their default). They have no other explicit functionality; however, they are used by NumPy and other third-party packages. Slice objects are also generated when extended indexing syntax is used. For example: a[start:stop:step] or a[start:stop, i]. See itertools.islice() for an alternate version that returns an iterator.

sorted(iterable, *, key=None, reverse=False)

Retorna una nueva lista ordenada a partir de los elementos en iterable.

Tiene dos argumentos opcionales que deben ser especificados como argumentos de palabra clave.

key especifica una función de un argumento que es empleada para extraer una clave de comparación de cada elemento en iterable (por ejemplo, key=str.lower`). El valor por defecto es ``None (compara los elementos directamente).

reverse es un valor boleado. Si está puesto a True, entonces la lista de elementos se ordena como si cada comparación fuera reversa.

Puedes usar functools.cmp_to_key() para convertir las funciones cmp a la antigua usanza en funciones key.

La función built-in sorted() está garantizada en cuanto a su estabilidad. Un ordenamiento es estable si garantiza que no cambia el orden relativo de elementos que resultan igual en la comparación — esto es de gran ayuda para ordenar en múltiples pases (por ejemplo, ordenar por departamento, después por el escalafón de salario).

The sort algorithm uses only < comparisons between items. While defining an __lt__() method will suffice for sorting, PEP 8 recommends that all six rich comparisons be implemented. This will help avoid bugs when using the same data with other ordering tools such as max() that rely on a different underlying method. Implementing all six comparisons also helps avoid confusion for mixed type comparisons which can call reflected the __gt__() method.

Para ejemplos de ordenamiento y para un breve tutorial sobre ello, ver HOW TO - Ordenar.

@staticmethod

Transforma un método en un método estático.

Un método estático no recibe un primer argumento implícito. Para declarar un método estático, utiliza esta expresión:

class C:
    @staticmethod
    def f(arg1, arg2, ...): ...

La forma @staticmethod es una función decorator — ver Definiciones de funciones para más detalles.

A static method can be called either on the class (such as C.f()) or on an instance (such as C().f()). Moreover, they can be called as regular functions (such as f()).

Static methods in Python are similar to those found in Java or C++. Also, see classmethod() for a variant that is useful for creating alternate class constructors.

Como todos los decoradores, es también posible llamar a staticmethod como una función normal y hacer algo con su resultado. Esto es necesario a veces cuando necesitas una referencia a una función desde el cuerpo de una clase y quieres evitar la transformación automática a un método de la instancia. Para dichos casos, emplea esta expresión:

def regular_function():
    ...

class C:
    method = staticmethod(regular_function)

Para más información sobre métodos estáticos, ver Jerarquía de tipos estándar.

Distinto en la versión 3.10: Static methods now inherit the method attributes (__module__, __name__, __qualname__, __doc__ and __annotations__), have a new __wrapped__ attribute, and are now callable as regular functions.

class str(object='')
class str(object=b'', encoding='utf-8', errors='strict')

Retorna una versión str del object. Ver str() para más detalles.

str es la class cadena built-in . Para información general sobre strings, ver Cadenas de caracteres — str.

sum(iterable, /, start=0)

Suma start y los elementos de un iterable de izquierda a derecha y Retorna el total. Los elementos del iterable son normalmente números, y el valor start no puede ser una cadena.

Para algunos casos de uso, hay buenas alternativas a sum(). La manera preferente y más rápida de concatenar secuencias de cadenas es llamado a ’’.join(sequence). Para añadir valores de punto flotante con precisión extendida, ver math.fsum(). Para concatenar series de iterabais, considera usar itertools.chain().

Distinto en la versión 3.8: El parámetro start puede ser especificado como un argumento de palabra clave.

class super([type[, object-or-type]])

Retorna un objeto proxy que delega las llamadas de métodos a clases padre o hermanas de type. Esto es útil para acceder métodos heredados que han sido invalidados en una clase.

object-or-type determina el method resolution order a ser buscado. La búsqueda empieza desde la clase justo después de type.

Por ejemplo __mro__ de object-or-type es D -> B -> C -> A -> object y el valor de type es B, entonces super() busca C -> A -> object.

El atributo __mro__ de object-or-type lista el orden de búsqueda del método de solución empleado por getattr() y super(). El atributo es dinámico y puede cambiar en cuanto la jerarquía de herencia se actualiza.

Si se omite el segundo argumento, el objeto super retornado no está vinculado. Si el segundo argumento es un objeto, isinstance(obj, type) debe ser verdadero. Si el segundo argumento es un tipo, issubclass(type2, type) debe ser verdadero (esto es útil para classmethods).

Hay dos casos de uso típicos para super. En una jerarquía de clases con herencia única, super puede ser utilizado para referirse a las clases padre sin llamarlas explícitamente, haciendo el código más sencillo de mantener. Este uso es muy similar al de super en otros lenguajes de programación.

The second use case is to support cooperative multiple inheritance in a dynamic execution environment. This use case is unique to Python and is not found in statically compiled languages or languages that only support single inheritance. This makes it possible to implement «diamond diagrams» where multiple base classes implement the same method. Good design dictates that such implementations have the same calling signature in every case (because the order of calls is determined at runtime, because that order adapts to changes in the class hierarchy, and because that order can include sibling classes that are unknown prior to runtime).

Para ambos casos, la llamada típica de una superclase se parece a:

class C(B):
    def method(self, arg):
        super().method(arg)    # This does the same thing as:
                               # super(C, self).method(arg)

Además de para los métodos de búsqueda, super() también funciona para búsquedas de atributos. Un caso de uso posible para esto es llamar a descriptores en una clase padre o hermana.

Nótese que super() se implementa como parte del proceso vinculante para búsquedas de atributos explícitos punteados tales como super().__getitem__(name). Lo hace implementando su propio método __getattribute__() para buscar clases en un orden predecible que soporte herencia múltiple cooperativa. De la misma manera, super() no está definida para búsquedas implícitas usando declaraciones o operadores como super()[name].

Nótese también, que aparte de en su forma sin argumentos, super() no está limitada a su uso dentro de métodos. La forma con dos argumentos especifica de forma exacta los argumentos y hace las referencias apropiadas. La forma sin argumentos solo funciona dentro de una definición de clase, ya que el compilador completa los detalles necesarios para obtener correctamente la clase que está siendo definida, así como accediendo a la instancia actual para métodos ordinarios.

Para sugerencias prácticas sobre como diseñas clases cooperativas usando super(), véase guía de uso de super().

class tuple([iterable])

Más que una función, tuple es en realidad un tipo de secuencia inmutable, tal y como está documentado en Tuplas y Tipos secuencia — list, tuple, range.

class type(object)
class type(name, bases, dict, **kwds)

Con un argumento, retorna el tipo de un object. El valor de retorno es un objeto tipo y generalmente el mismo objeto que el retornado por object.__class__.

La función integrada isinstance() es la recomendada para testear el tipo de un objeto, ya que tiene en cuenta las subclases.

Con tres argumentos, retorna un nuevo tipo objeto. Esta es esencialmente una forma dinámica de la declaración class. La cadena de caracteres name es el nombre de la clase y se convierte en el atributo __name__. La tupla bases contiene las clases base y se convierte en el atributo __bases__; si está vacío, se agrega object, la base última de todas las clases. El diccionario dict contiene definiciones de métodos y atributos para el cuerpo de la clase; se puede copiar o ajustar antes de convertirse en el atributo __dict__. Las siguientes dos declaraciones crean objetos idénticos type:

>>> class X:
...     a = 1
...
>>> X = type('X', (), dict(a=1))

Ver también Objetos Tipo.

Keyword arguments provided to the three argument form are passed to the appropriate metaclass machinery (usually __init_subclass__()) in the same way that keywords in a class definition (besides metaclass) would.

See also Personalización de creación de clases.

Distinto en la versión 3.6: Subclases de type que no sobrecarguen type.__new__ ya no pueden usar la forma con un argumento para obtener el tipo de un objeto.

vars([object])

Retorna el atributo __dict__ para un módulo, clase, instancia o cualquier otro objeto con un atributo __dict__.

Los objetos como módulos o instancias tienen un atributo actualizable __dict__; sin embargo, otros objetos pueden tener restricciones de escritura en sus atributos __dict__ (por ejemplo, hay clases que usan types.MappingProxyType para evitar actualizaciones directas del diccionario).

Sin un argumento, vars() funciona como locals(). Ten en cuenta que el diccionario de locals solo es útil para lecturas ya que las actualizaciones del diccionario de locals son ignoradas.

Una excepción TypeError se genera si se especifica un objeto pero no tiene un atributo __dict__ (por ejemplo, si su clase define el atributo __slots__).

zip(*iterables, strict=False)

Iterate over several iterables in parallel, producing tuples with an item from each one.

Example:

>>> for item in zip([1, 2, 3], ['sugar', 'spice', 'everything nice']):
...     print(item)
...
(1, 'sugar')
(2, 'spice')
(3, 'everything nice')

More formally: zip() returns an iterator of tuples, where the i-th tuple contains the i-th element from each of the argument iterables.

Another way to think of zip() is that it turns rows into columns, and columns into rows. This is similar to transposing a matrix.

zip() is lazy: The elements won’t be processed until the iterable is iterated on, e.g. by a for loop or by wrapping in a list.

One thing to consider is that the iterables passed to zip() could have different lengths; sometimes by design, and sometimes because of a bug in the code that prepared these iterables. Python offers three different approaches to dealing with this issue:

  • By default, zip() stops when the shortest iterable is exhausted. It will ignore the remaining items in the longer iterables, cutting off the result to the length of the shortest iterable:

    >>> list(zip(range(3), ['fee', 'fi', 'fo', 'fum']))
    [(0, 'fee'), (1, 'fi'), (2, 'fo')]
    
  • zip() is often used in cases where the iterables are assumed to be of equal length. In such cases, it’s recommended to use the strict=True option. Its output is the same as regular zip():

    >>> list(zip(('a', 'b', 'c'), (1, 2, 3), strict=True))
    [('a', 1), ('b', 2), ('c', 3)]
    

    Unlike the default behavior, it checks that the lengths of iterables are identical, raising a ValueError if they aren’t:

    >>> list(zip(range(3), ['fee', 'fi', 'fo', 'fum'], strict=True))
    Traceback (most recent call last):
      ...
    ValueError: zip() argument 2 is longer than argument 1
    

    Without the strict=True argument, any bug that results in iterables of different lengths will be silenced, possibly manifesting as a hard-to-find bug in another part of the program.

  • Shorter iterables can be padded with a constant value to make all the iterables have the same length. This is done by itertools.zip_longest().

Edge cases: With a single iterable argument, zip() returns an iterator of 1-tuples. With no arguments, it returns an empty iterator.

Tips and tricks:

  • The left-to-right evaluation order of the iterables is guaranteed. This makes possible an idiom for clustering a data series into n-length groups using zip(*[iter(s)]*n, strict=True). This repeats the same iterator n times so that each output tuple has the result of n calls to the iterator. This has the effect of dividing the input into n-length chunks.

  • zip() en conjunción con el operador * puede usar para descomprimir (unzip) una lista:

    >>> x = [1, 2, 3]
    >>> y = [4, 5, 6]
    >>> list(zip(x, y))
    [(1, 4), (2, 5), (3, 6)]
    >>> x2, y2 = zip(*zip(x, y))
    >>> x == list(x2) and y == list(y2)
    True
    

Distinto en la versión 3.10: Added the strict argument.

__import__(name, globals=None, locals=None, fromlist=(), level=0)

Nota

Ésta es una función avanzada que no se necesita en el uso cotidiano de programación en Python, a diferencia de importlib.import_module().

Esta función es invocada por la declaración import. Puede ser reemplazada para cambiar la semántica de la declaración import (mediante la importación del módulo builtins y su asignación a builtins.__import__), pero esto está fuertemente no recomendado ya que es normalmente mucho más simple usar ganchos (hooks) de importación (ver PEP 302) para obtener los mismos objetivos y sin causar problemas en código que asume que la implementación por defecto de importaciones está siendo utilizada. El uso directo de __import__() tampoco está recomendado y se prefiere importlib.import_module().

The function imports the module name, potentially using the given globals and locals to determine how to interpret the name in a package context. The fromlist gives the names of objects or submodules that should be imported from the module given by name. The standard implementation does not use its locals argument at all and uses its globals only to determine the package context of the import statement.

level especifica si usar importaciones absolutas o relativas. 0 (por defecto) significa sólo realizar importaciones absolutas. Valores positivos de level indican el número de directorios progenitores relativos al del módulo para buscar llamando a __import__() (ver PEP 328 para los detalles).

Cuando la variable name tiene la forma package.module, normalmente el paquete del nivel más alto (el nombre hasta el primer punto) se retorna, no el modulo llamado por name. Sin embargo, cuando un argumento fromlist no vacío es indicado, el módulo llamado por name es retornado.

Por ejemplo, la declaración import spam resulta en un bytecode similar al siguiente código:

spam = __import__('spam', globals(), locals(), [], 0)

La declaración import spam.ham resulta en esta llamada:

spam = __import__('spam.ham', globals(), locals(), [], 0)

Nótese cómo __import__() retorna el módulo del nivel superior en este caso porque este es el objeto que está enlazado a un nombre por la declaración import.

Por otra parte, la declaración from spam.ham import eggs, sausage as saus resulta en

_temp = __import__('spam.ham', globals(), locals(), ['eggs', 'sausage'], 0)
eggs = _temp.eggs
saus = _temp.sausage

Aquí, el módulo spam.ham es retornado desde __import__(). Desde este objeto, los nombres a importar son obtenidos y asignados a sus nombres respectivos.

Si simplemente quieres importar un módulo (potencialmente dentro de un paquete) por nombre, usa importlib.import_module().

Distinto en la versión 3.3: Valores negativos para level ya no están soportados (lo que también cambia el valor por defecto a 0).

Distinto en la versión 3.9: Cuando se utilizan las opciones de línea de comando -E o -I, la variable de entorno PYTHONCASEOK ahora se ignora.

Notas al pie

1

Ten en cuenta que el parser sólo acepta la convención de final de línea de tipo Unix. Si estás leyendo el código de un fichero, asegúrate de usar la el modo de conversión de nueva línea para convertir las líneas de tipo Windows o Mac.