Fragment uit het python-studiehandboek voor de opname.
De client kan de import of from instructie uitvoeren. Als de module niet wordt geladen, zullen deze statements het modulebestandprogramma zoeken, compileren en uitvoeren. Het belangrijkste verschil is dat import de hele module leest, dus deze moet worden gedefinieerd voordat de variabelenaam gelezen kan worden; From zal module-specifieke variabelennamen ophalen (of kopiëren).
import zorgt ervoor dat een variabelennaam verwijst naar het gehele moduleobject, dus de eigenschappen van de module moeten worden verkregen via de modulenaam (bijv. module1.printer). en From kopieert de variabelenaam naar een andere scope, zodat de gekopieerde variabelnaam direct in het script kan worden gebruikt zonder door een module te gaan (bijvoorbeeld printer).
From Statement kan naamruimtes doorbreken. Als je variabelen importeert met from en die variabelen worden gedupliceerd met bestaande variabelen in scope, worden de variabelen stilletjes overschreven. Dit is geen probleem bij het gebruik van import-instructies, omdat de inhoud ervan via de modulenaam moet worden verkregen. Bij gebruik van from is dit in de praktijk echter geen groot probleem, zolang je dit begrijpt en verwacht, vooral als je duidelijk de importvariabelenamen vermeldt (bijvoorbeeld from module import x, y, z).
Aan de andere kant, wanneer deze wordt gebruikt met de reload-aanroep, heeft de from-instructie een ernstig probleem, omdat de geïmporteerde variabelenaam kan verwijzen naar een eerdere versie van het object. Bovendien kan het formulier uit module-import * inderdaad de naamruimte breken en variabelenamen moeilijk te begrijpen maken, vooral bij het importeren van meer dan één bestand.
Een meer pragmatische suggestie is dat eenvoudige modules over het algemeen importeren in plaats van from gebruiken. De meeste from-statements worden gebruikt om expliciet de gewenste variabelen op te sommen, en zijn beperkt tot het gebruik van de vorm from * slechts één keer per bestand. Op deze manier kan elke ongedefinieerde variabelenaam worden beschouwd als bestaand in de module waarnaar wordt verwezen vanuit *. Je moet echt importeren als je dezelfde variabelenaamvariabele moet gebruiken die in twee verschillende modules is gedefinieerd, in dat geval kun je from niet gebruiken.
Ik heb veel gepraat, ik weet niet wat ik moet zeggen, laten we het er kort over hebben.
- import Module # Introduceer modules
- van moduleimport Overig # Introduceer klassen, functies of variabelen in de module
- van Moduleimport * # Introduceer alle 'publieke' leden in de module
In gewone taal:
Importeer een klasse #把整个一班的学生引入了进来
van een groep importen Xiao Wang #只把一般的小王引入了进来
Bijvoorbeeld:
Het tijdpakket is een voorbeeld, en de volgende twee schrijfmethoden zijn hetzelfde, als volgt:
|