Vi har i flere artikler importert fra moduler, for eksempel fra math. Men vi kan også lagre vår egen kode i moduler, som vi så kan importere i annen kode.
Vi skal som eksempel skrive en funksjon vi kaller fakultet(), som vi skal lagre i en modul vi kaller kombinatorikk. Python har riktignok en funksjon for å beregne fakultet i modulen math, men vi skal lage vår egen for øvelsens skyld.
Fakultetet til et positivt heltall, n, kan defineres som 1 · 2 · 3 · … · n. Det er også definert at fakultetet til 0 er 1.
Fakultetet til n skriver vi som n!, det vil si n med et utropstegn etter.
Vi har altså at
0! = 1
1! = 1
2! = 1 · 2 = 2
3! = 1 · 2 · 3 = 6
og så videre.
En funksjon som beregner n! kan se ut som i eksempel 1.
Eksempel 1:
def fakultet(n):
"""Beregner n!"""
fakt = 1
for m in range(2, n + 1):
fakt *= m
return fakt
Vi forutsetter at n er et heltall større eller lik 0, og gjør ikke noen verifisering av dette.
Hvis n er 0 eller 1, vil ikke løkka bli gjennomløpt, og fakt beholder verdien 1. Hvis n er 2 eller større, vil løkka bli gjennomløpt, og fakt vil bli multiplisert med m fra og med 2 til og med n.
Hvis vi lagrer funksjonen i ei fil vi kaller kombinatorikk, blir kombinatorikk en modul vi kan importere. Vi kan importere hele modulen ved å skrive:
import kombinatorikk
Da må vi referere til funksjonen som kombinatorikk.fakultet().
Eller vi kan velge å importere bare fakultet:
from kombinatorikk import fakultet
Da referer vi til funksjonen som fakultet().
Skriv funksjonen fakultet(), slik den er vist over, inn i ei tom fil, og lagre fila med navnet kombinatorikk.
Åpne deretter ei ny fil, importer fakultet() fra kombinatorikk, og bruk fakultet() til å beregne fakultetet til 5.
Skriv ut resultatet. Riktig svar er 120.
Obs: Den nye fila skal ikke inneholde koden til fakultet(), bare hente den gjennom import.
Tips: Det kan være lurt å ha begge filene i samme mappe. Å importere på tvers av mapper kan være utfordrende.
Kilder
-
- Matthes A. (2019). Python Crash Course. no starch press