paquetes - modulo python
¿Cuándo una función en un módulo de biblioteca estándar se llama función incorporada? (4)
Bueno, a partir de esta definición, una función está incorporada cuando dice que está incorporada;)
Más en serio: Python es un lenguaje (llamémoslo parte "legal"), CPython es una implementación (y no la única) del lenguaje Python (llamémoslo parte "técnica").
Desde un punto de vista legal, la definición de idioma establece que una implementación debe hacer que algunas funciones (y clases y objetos) estén disponibles sin ninguna importación (IOW, el lenguaje está "incorporado" en sí mismo). Esto es lo que la documentación de Python define como "incorporado".
Ahora, desde un punto de vista técnico, esto no impide que una implementación tenga algunas otras funciones / objetos / clases "técnicamente" integradas (en el sentido de que técnicamente son parte del tiempo de ejecución) PERO expuestas como parte de uno de los módulos o paquetes de la plataforma de datos.
Estoy confundido sobre el término "función incorporada". Pensé que significaba solo aquellas funciones integradas en el intérprete y documentadas en - 2. Funciones integradas
Pero parece que las funciones definidas en módulos de biblioteca estándar también son funciones integradas (en algunos casos). Por ejemplo -
>>> import os
>>> os.chdir
<built-in function chdir>
>>> import warnings
>>> warnings.warn
<built-in function warn>
>>> import json
>>> json.dumps
<function dumps at 0x7f3643a240d0> # not built-in
>>> dir
<built-in function dir>
>>>
Entonces, ¿cuándo es una función en un módulo de biblioteca estándar llamada función incorporada y cuándo no lo es?
En el libro " Fluent Python " de Luciano Ramalho , primera edición, tercer lanzamiento 2016-03-18, publicado por O''Reilly, se lee en la página 742:
El término [es decir, "función incorporada"] a menudo se refiere solo a las funciones que no necesitan ser importadas ... Pero los módulos incorporados como sys, math, re, etc. también contienen funciones incorporadas.
En general, este término parece ser usado de manera inconsistente. Pero para todos los propósitos prácticos, esto no debería tener importancia ".
Hay dos significados de "incorporado" aquí, aunque ambos significan "parte del intérprete". La referencia de la biblioteca lo utiliza para indicar que una función está disponible sin una import
(no es parte de un módulo, aunque vea builtins
). El intérprete lo usa para indicar que una función se implementa de forma nativa en lugar de en Python (en CPython, al menos se implementa nominalmente en C ).
Hay otro significado en el lado C: un módulo de extensión ( es decir , uno escrito en C) está incorporado si el binario de Python lo incorpora en lugar de cargarlo cuando sea necesario.
Una función incorporada, según el manual de referencia es:
Funciones integradas
Un objeto de función incorporada es una envoltura alrededor de una función C. Ejemplos de funciones incorporadas son
len()
ymath.sin()
(math
es un módulo incorporado estándar). El número y el tipo de los argumentos están determinados por la función C. Atributos especiales de solo lectura:__doc__
es la cadena de documentación de la función, oNone
si no está disponible;__name__
es el nombre de la función;__self__
se establece en Ninguno (pero vea el siguiente elemento);__module__
es el nombre del módulo en el que se definió la función o Ninguno si no está disponible.
Esto se refiere a CPython, otras implementaciones, como Jython utilizaría Java en lugar de C para implementar sus incorporaciones.
La sección sobre las funciones incorporadas de la biblioteca estándar habla de cosas que siempre están disponibles. Esto, junto con las constantes incorporadas y los tipos incorporados, forman el espacio de nombres integrado de identificadores a los que siempre puede acceder.
No todo en este espacio de nombres incorporado es una función incorporada o un tipo incorporado. Los casos notables son aquellos que se usan en modo interactivo, como help
y quit/exit
.