Grazie per A2A.
L'idea molto generale è simile, sì. Vuoi riutilizzare il codice scritto da qualche altra parte nel tuo programma senza riscriverlo. Ma, in realtà, le due istruzioni sono molto diverse in ciò che fanno.
La direttiva #include è un vecchio idioma del C. È una direttiva del preprocessore, che dice ad una parte speciale del compilatore C, chiamata preprocessore, di includere un file header al suo posto.
Quando si compila il file sorgente (C o CPP), il compilatore chiama il preprocessore. Il preprocessore legge l'intero file, cercando le direttive del preprocessore, che iniziano tutte con un #. Quando ne trova una, come la direttiva #include, rimuove questa linea e mette il contenuto del suddetto file header al posto della linea rimossa. Il file importato sarà tipicamente un insieme di dichiarazioni di funzioni e alcune definizioni di simboli e macro.
In python, l'istruzione import aggiunge o definisce il nome del modulo nella tabella dei simboli corrente. Non importa l'intero modulo! This is why you need to write the fully qualified function name after calling import, e.g.:
- import os
- os.system("/bin/bash")
If you chose the from module import member format, e.g.:
- from os import system
Then you can call that function directly. Perché? Perché in questo caso, import ha aggiunto il nome della funzione system nella tabella dei simboli corrente.
Così, disegniamo uno scarabocchio infantile che illustra la differenza tra include e import in una tabella:
- +----------+-----------+----------+
- | Instruc- | Line Sub- | Add to |
- | tion | stitution | Symtable |
- +----------+-----------+----------+
- | #include | YES | |
- +----------+-----------+----------+
- | import | | YES |
- +----------+-----------+----------+
That says: include does substitution, while import modifies the symbol table.