Qu’est-ce que #include ? Est-ce que c’est comme ‘import’ en python ?


Merci pour l'A2A.

L'idée très générale est similaire, oui. Vous voulez réutiliser du code écrit ailleurs dans votre programme sans le réécrire. Mais, en fait, les deux instructions sont très différentes dans ce qu'elles font.


La directive #include est un vieil idiome du C. C'est une directive du préprocesseur, qui indique à une partie spéciale du compilateur C, appelée le préprocesseur, d'inclure un fichier d'en-tête à sa place.

Lorsque vous compilez votre fichier source (C ou CPP), le compilateur fait appel au préprocesseur. Le préprocesseur lit l'ensemble du fichier, à la recherche de directives de préprocesseur, qui commencent toutes par un #. Lorsqu'il en trouve une, comme la directive #include, il supprime cette ligne et place le contenu dudit fichier d'en-tête à la place de la ligne supprimée. Le fichier importé sera typiquement une collection de déclarations de fonctions, et quelques symboles et définitions de macros.

En python, l'instruction import ajoute ou définit le nom du module dans la table de symboles courante. Elle n'importe pas le module entier ! 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. Pourquoi ? Parce que dans ce cas, import a ajouté le nom de la fonction system dans la table de symboles courante.

Donc, dessinons un gribouillis enfantin illustrant la différence entre include et import dans un tableau :

  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.