Hoe u modules importeert in Python 3

Inleiding

De programmeertaal Python wordt geleverd met een verscheidenheid aan ingebouwde functies. Onder deze zijn verschillende veelvoorkomende functies, waaronder:

  • print() die expressies afdrukt
  • abs() die de absolute waarde van een getal retourneert
  • int() die een ander gegevenstype naar een geheel getal omzet
  • len() die de lengte van een reeks of verzameling retourneert

Deze ingebouwde functies zijn echter beperkt, en we kunnen modules gebruiken om meer geavanceerde programma’s te maken.

Modules zijn Python .py bestanden die bestaan uit Python-code. Elk Python-bestand kan worden aangeroepen als een module. Een Python-bestand genaamd hello.py heeft de modulenaam hello die kan worden geïmporteerd in andere Python-bestanden of gebruikt op de Python-opdrachtregelinterpreter. U kunt leren hoe u uw eigen modules maakt door Hoe modules schrijven in Python 3 te lezen.

Modules kunnen functies, klassen en variabelen definiëren die je kunt verwijzen in andere Python .py bestanden of via de Python opdrachtregel interpreteren.

In Python worden modules benaderd door het gebruik van de import instructie. Wanneer je dit doet, voer je de code van de module uit, waarbij de scopes van de definities worden behouden zodat je huidige bestand(en) hiervan gebruik kunnen maken.

Wanneer Python bijvoorbeeld een module genaamd hello importeert, zal de interpreter eerst zoeken naar een ingebouwde module genaamd hello. Als er geen ingebouwde module wordt gevonden, zal de Python-interpreter vervolgens zoeken naar een bestand met de naam hello.py in een lijst met directories die hij ontvangt van de sys.path variabele.

Deze tutorial zal je begeleiden bij het controleren op en installeren van modules, het importeren van modules, en het aliasen van modules.

Vereisten

Je moet Python 3 geïnstalleerd hebben en een programmeeromgeving op je computer of server hebben ingesteld. Als je geen programmeeromgeving hebt ingesteld, kun je de installatie- en instelgidsen raadplegen voor een lokale programmeeromgeving of voor een programmeeromgeving op je server die geschikt is voor je besturingssysteem (Ubuntu, CentOS, Debian, enzovoort).

Controleren en modules installeren

Er zijn een aantal modules die zijn ingebouwd in de Python Standaardbibliotheek, die veel modules bevat die toegang bieden tot systeemfunctionaliteit of gestandaardiseerde oplossingen bieden. De Python Standaardbibliotheek is onderdeel van elke Python-installatie.

Informatie: Om de voorbeeldcode in deze tutorial te volgen, open je een interactieve Python-shell op je lokale systeem door het python3-commando uit te voeren. Vervolgens kun je de voorbeelden kopiëren, plakken of bewerken door ze toe te voegen na de >>>-prompt.

Om te controleren of deze Python-modules klaar zijn om te worden gebruikt, ga je naar je lokale Python 3-programmeeromgeving of naar een op server gebaseerde programmeeromgeving en start je de Python-interpreter in je commandoregel als volgt:

  1. python

Vanuit de interpreter kun je het import-statement uitvoeren om te controleren of de opgegeven module gereed is om te worden aangeroepen, zoals:

  1. import math

Omdat math een ingebouwde module is, zou je interpreter de taak zonder feedback moeten voltooien en terugkeren naar de prompt. Dit betekent dat je niets hoeft te doen om de math-module te gaan gebruiken.

Laten we het import-statement uitvoeren met een module die je mogelijk niet hebt geïnstalleerd, zoals de 2D-plotbibliotheek matplotlib:

  1. import matplotlib

Als matplotlib niet is geïnstalleerd, ontvang je een foutmelding zoals deze:

Output
ImportError: No module named 'matplotlib'

Je kunt de Python-interpreter deactiveren met CTRL + D en vervolgens matplotlib installeren met pip.

Vervolgens kunnen we pip gebruiken om de matplotlib-module te installeren:

  1. pip install matplotlib

Zodra het is geïnstalleerd, kun je matplotlib importeren in de Python-interpreter met import matplotlib, en het zal zonder fouten worden voltooid.

Modules importeren

Om gebruik te kunnen maken van de functies in een module, moet je de module importeren met een import-statement.

Een import-verklaring bestaat uit het import-trefwoord samen met de naam van de module.

In een Python-bestand wordt dit bovenaan de code verklaard, onder eventuele shebang-regels of algemene opmerkingen.

Dus, in het Python-programmabestand my_rand_int.py zouden we de random-module importeren om willekeurige getallen te genereren op deze manier:

my_rand_int.py
import random

Wanneer we een module importeren, maken we deze beschikbaar voor ons in ons huidige programma als een aparte namespace. Dit betekent dat we naar de functie moeten verwijzen met puntnotatie, zoals [module].[functie].

In de praktijk, met het voorbeeld van de random-module, kan dit eruit zien als een functie zoals:

  • random.randint() die de functie aanroept om een willekeurig geheel getal terug te geven, of
  • random.randrange() die de functie aanroept om een willekeurig element uit een gespecificeerd bereik terug te geven.

Laten we een for-lus maken om te laten zien hoe we een functie van de random-module binnen ons programma my_rand_int.py zullen aanroepen:

my_rand_int.py
import random


for i in range(10):
    print(random.randint(1, 25))

Dit kleine programma importeert eerst de random-module op de eerste regel, gaat dan over naar een for-lus die zal werken met 10 elementen. Binnen de lus zal het programma een willekeurig geheel getal binnen het bereik van 1 tot en met 25 (inclusief) afdrukken. De gehele getallen 1 en 25 worden doorgegeven aan random.randint() als zijn parameters.

Wanneer we het programma uitvoeren met python my_rand_int.py, ontvangen we 10 willekeurige gehele getallen als output. Omdat deze willekeurig zijn, krijg je waarschijnlijk telkens verschillende getallen wanneer je het programma uitvoert, maar ze zullen iets genereren zoals dit:

Output
6 9 1 14 3 22 10 1 15 9

De gehele getallen mogen nooit onder 1 of boven 25 gaan.

Als je functies van meer dan één module wilt gebruiken, kun je dat doen door meerdere import-statements toe te voegen:

my_rand_int.py
import random
import math

Je kunt programma’s zien die meerdere modules importeren met komma’s die ze scheiden – zoals import random, math – maar dit is niet consistent met de PEP 8 Style Guide.

Om gebruik te maken van onze aanvullende module, kunnen we de constante pi van math aan ons programma toevoegen, en het aantal willekeurige getallen dat afgedrukt wordt verminderen:

my_rand_int.py
import random
import math


for i in range(5):
    print(random.randint(1, 25))

print(math.pi)

Wanneer we nu ons programma uitvoeren, krijgen we output die er zo uitziet, met een benadering van pi als onze laatste regel van output:

Output
18 10 7 13 10 3.141592653589793

De import-statement stelt je in staat om één of meer modules in je Python-programma te importeren, zodat je gebruik kunt maken van de definities die in die modules zijn geconstrueerd.

Het gebruik van fromimport

Om te verwijzen naar items uit een module binnen de namespace van je programma, kun je de fromimport-verklaring gebruiken. Wanneer je modules op deze manier importeert, kun je verwijzen naar de functies bij naam in plaats van via puntnotatie.

In deze constructie kun je specificeren welke definities rechtstreeks te verwijzen.

In andere programma’s zie je mogelijk dat de import-verklaring verwijzingen naar alles wat binnen de module is gedefinieerd, accepteert door een asterisk (*) te gebruiken als een wildcard, maar dit wordt afgeraden door PEP 8.

Laten we eerst bekijken hoe je één specifieke functie, randint(), uit de random-module importeert:

my_rand_int.py
from random import randint

Hier roepen we eerst het from-keyword aan, vervolgens random voor de module. Vervolgens gebruiken we het import-keyword en roepen we de specifieke functie aan die we willen gebruiken.

Wanneer we nu deze functie implementeren binnen ons programma, zullen we de functie niet meer in puntnotatie schrijven als random.randint(), maar zullen we alleen randint() schrijven:

my_rand_int.py
from random import randint


for i in range(10):
    print(randint(1, 25))

Wanneer je het programma uitvoert, krijg je een output die vergelijkbaar is met wat we eerder hebben ontvangen.

Het gebruik van de fromimport-constructie stelt ons in staat om de gedefinieerde elementen van een module binnen de namespace van ons programma te refereren, waardoor we puntnotatie kunnen vermijden.

Modules een alias geven

Het is mogelijk om de namen van modules en hun functies binnen Python te wijzigen door het gebruik van het as trefwoord.

Je wilt mogelijk een naam wijzigen omdat je dezelfde naam al voor iets anders in je programma hebt gebruikt, een andere module die je hebt geïmporteerd ook die naam gebruikt, of je wilt een langere naam afkorten die je veel gebruikt.

De constructie van deze verklaring ziet er als volgt uit:

import [module] as [another_name]

Laten we de naam van de math module wijzigen in ons my_math.py programma bestand. We zullen de module naam van math veranderen in m om het te verkorten. Ons aangepaste programma zal er als volgt uitzien:

my_math.py
import math as m


print(m.pi)
print(m.e)

Binnen het programma verwijzen we nu naar de pi constante als m.pi in plaats van math.pi.

Voor sommige modules is het gebruikelijk om aliassen te gebruiken. De matplotlib.pyplot module’s officiële documentatie roept op tot het gebruik van plt als alias:

import matplotlib.pyplot as plt

Dit stelt programmeurs in staat om het kortere woord plt toe te voegen aan een van de beschikbare functies binnen de module, zoals bijvoorbeeld plt.show(). Je kunt deze alias importverklaring zien in gebruik binnen onze “How to Plot Data in Python 3 Using matplotlib tutorial.”

Conclusie

Wanneer we modules importeren, kunnen we functies aanroepen die niet ingebouwd zijn in Python. Sommige modules worden geïnstalleerd als onderdeel van Python, en sommige zullen we installeren via pip.

Het gebruik van modules stelt ons in staat om onze programma’s robuuster en krachtiger te maken omdat we bestaande code gebruiken. We kunnen ook onze eigen modules maken voor onszelf en voor andere programmeurs om te gebruiken in toekomstige programma’s.

Source:
https://www.digitalocean.com/community/tutorials/how-to-import-modules-in-python-3