Moduler i Python

 

Hvad er moduler?

Et modul er en fil eller et sæt af filer, der indeholder nedskrevne objekter, som kan hentes til benyttelse i sin kodefil. Objekter kan være funktioner, klasser og variabler. På den måde kan man betragte moduler som et bibliotek som man kan “låne” objekter fra. Disse moduler kan man selv skrive, så man hurtigt kan genbruge koder fra sine tidligere programmer – men oftest henter man moduler som er skrevet af andre, til at benytte som et værktøj i ens program.

For at hente et modul benytter man erklæringen import:

import modulnavn

Hvor modulnavn er navnet på det modul som man vil hente.

Hvis man vil hente et bestemt objekt i et modul, så skal man benytte erklæringen from sammen med import:

from modulnavn import objektnavn

modulnavn er navnet på det modul som man vil hente og objektnavn er navnet på det objekt som man vil hente.

Hvis man vil have adgang til alle objekter i et modul, så kan man angive objektnavnet til at være en stjerne (*).

Som udgangspunkt skal man altid benytte import og from til at importere moduler i toppen af programmets kode.

 

Selvskabte moduler

Man kan selv skabe moduler som kan benyttes i andre programmer. Nedenstående program er gemt i en fil med navnet mit_program:

def Hilsen(navn):
  print("Hej, " + navn)

Programmet indeholder en funktion med navnet Hilsen, som udprinter en personlig hilsen.

Funktionen kan benyttes i andre programmer ved at man benytter import og angiver modulet til at være navnet på den fil, som man vil hente et objekt fra. I det her tilfælde er filnavnet mit_program:

import mit_program

mit_program.Hilsen("Alexander")

I ovenstående kodestykke er modulet mit_program blevet importeret. Herefter er funktionen Hilsen blevet benyttet ved at man først angiver navnet på modulet, efterfulgt af et punktum, efterfulgt af funktionens navn samt dens parameterværdi. Kodestykket vil udprinte følgende:

Hej, Alexander

 

Eksterne moduler

Programmeringssproget Python indeholder hundredvis af forskellige moduler der kan hentes ned. Grunden til at de skal hentes ned for at kunne bruges er, at det ville sænke programmets og computerens hastighed, hvis alle moduler var hentet ned i forvejen.

Et eksempel på et eksternt modul er datetime, som også har et objekt der hedder datetime. Dette objekt indeholder funktionen now(), der gør at programmet returnerer det præcise nuværende tidspunkt når det bliver indlæst:

from datetime import datetime

nuværende_tidspunkt = datetime.now()
print(nuværende_tidspunkt)

Ovenstående program vil udprinte nedenstående (som er tidspunktet hvor denne artikel er skrevet. Hvis programmet indlæses igen, så vil det selvfølgelig være et nyt tidspunkt):

2020-05-24 20:38:15.596427

Her er tidspunktet hhv. angivet i år, måned, dag, time, minut, sekund og mikrosekund.

Bemærk, at hvis ikke man angiver hvilket objekt i modulet der skal importeres, og blot skriver import datetime, så er man også nødt til at angive objektets navn når man bruger det i programmet:

import datetime

nuværende_tidspunkt = datetime.datetime.now()
print(nuværende_tidspunkt)

Her er der skrevet datetime.datetime.now() da der først er angivet modulets navn, efterfulgt af objektets navn og dets metode now().

Nedenstående er en liste over nogle af de mest populære eksterne moduler og deres formål.

Du kan finde den fulde liste over alle moduler som findes i Python-biblioteket ved at klikke her.

 

Datetime

Modulet Datetime (som blev gennemgået lige før) kan returnere en vilkårlig dato helt ned til mikrosekunder.

import datetime

Datetime har et objekt som også hedder datetime, og dette objekt har endnu et objekt der hedder now(), som returnerer det nuværende tidspunkt som programmet bliver indlæst på.

Objektet datetime kan også indeholde parameterværdier for hhv. årstal, måned og dag, som vil returnere en vilkårlig dato. Udover disse tre parametre, kan man tilføje flere valgfrie som bestemmer hhv. time, minut, sekund, mikrosekund og tidszone.

 

NumPy

Modulet NumPy udvider antallet af matematiske muligheder med Python.

import numpy

NumPy gør det muligt at benytte objekter til at foretage mere komplekse matematiske udregninger til f.eks. statistik og algebra.

 

Decimal

Oftest når man laver matematiske udregninger med decimaltal i Python, så vil programmet returnere et tal med alt for mange decimaler. For at undgå dette kan man benytte objektet Decimal fra  modulet decimal.

from decimal import Decimal

Dette modul tilbyder mange forskellige måder at manipulere med decimaltal på, men det mest nyttefulde objekt er Decimal, som gør at man undgår alt for mange unødvendige decimaler. Dette gøres ved at benytte modulet på alle tal som er med i udregningen, ligesom i nedenstående eksempel:

from decimal import Decimal

æble_pris = Decimal('5.10') 
pære_pris = Decimal('7.35')  
ialt = æble_pris + pære_pris

Ovenstående kodestykke vil returnere 12.45 i stedet for 12.44999999999999996.

 

Random

Modulet Random benyttes til at generere tilfældige numre eller udvælge tilfældige elementer fra en liste.

import random

Dette modul har mange forskellige objekter, men de to mest brugbare er:

  • Objektet choice som returnerer et tilfældigt nummer fra en liste.
  • Objektet randint som returnerer et tilfældigt nummer mellem to angivne numre.

 

Matplotlib

Modulet Matplotlib kan benyttes til at få programmet til at visualisere todimensionelle grafer.

import matplotlib

Modulet gør det bl.a. muligt at skabe linjegrafer, histogrammer, punktgrafer, 3D-diagrammer og meget mere.

 

Pandas

Modulet Pandas kan benyttes til at analysere data og databaser i Python

import pandas

Ligesom med programmeringssproget SQL kan man definere og manipulere med data i databaser ved hjælp af Pandas.

 

Requests

Modulet Requests kan benyttes til at sende HTTP-anmodninger ved hjælp af Python.

import requests

Når man sender en HTTP-anmodning til en vilkårlig URL-sti, så vil programmet returnere sidens data. Udover at hente dataen, har modulet bl.a. også objekter som anmoder om at tilføje og slette data fra siden.

 

scikit-learn

scikit-learn er et modul som kan benyttes til at arbejde med machine learning og data mining i Python.

import sklearn

Modulet indeholder funktioner til at lave klassifikation, regression, gruppering, dimensionsreduktion, forbehandling og meget mere.

 

Navngiv modul

Det er muligt at give et modul et alias i sit program ved at benytte erklæringen as. Dette benyttes i tilfælde af at modulets navn er langt, eller hvis modulets navn er det samme som et andet objekt i ens program. I nedenstående eksempel bliver datetime omdøbt til x:

import datetime as x

Bemærk at aliasset kun gælder for programmet som det er skrevet i. I andre programmer vil aliasset ikke være gældende.