¿Qué es #include ? ¿Es como ‘import’ en python?

Gracias por A2A.

La idea general es similar, sí. Quieres reutilizar el código escrito en otro lugar en tu programa sin volver a escribirlo. Pero, en realidad, las dos instrucciones son muy diferentes en lo que hacen.

La directiva #include es un viejo modismo de C. Es una directiva del preprocesador, que indica a una parte especial del compilador de C, llamada preprocesador, que incluya un fichero de cabecera en su lugar.

Cuando se compila el fichero fuente (C o CPP), el compilador llama al preprocesador. El preprocesador lee todo el archivo, buscando las directivas del preprocesador, todas las cuales comienzan con un #. Cuando encuentra una, como la directiva #include, elimina esta línea y pone el contenido de dicho archivo de cabecera en lugar de la línea eliminada. El archivo importado será típicamente una colección de declaraciones de funciones, y algunos símbolos y definiciones de macros.

En python, la instrucción import añade o define el nombre del módulo en la tabla de símbolos actual. No importa el módulo completo!. This is why you need to write the fully qualified function name after calling import, e.g.:

  1. import os 
  2. os.system("/bin/bash") 

If you chose the from module import member format, e.g.:

  1. from os import system 

Then you can call that function directly. ¿Por qué? Porque en este caso, la importación ha añadido el nombre de la función sistema en la tabla de símbolos actual.

Entonces, dibujemos un garabato infantil que ilustre la diferencia entre include e import en una tabla:

  1. +----------+-----------+----------+ 
  2. | Instruc- | Line Sub- | Add to | 
  3. | tion | stitution | Symtable | 
  4. +----------+-----------+----------+ 
  5. | #include | YES | | 
  6. +----------+-----------+----------+ 
  7. | import | | YES | 
  8. +----------+-----------+----------+ 

That says: include does substitution, while import modifies the symbol table.