Hoofdstuk 6
De standaardbibliotheek bestaat al
Kies een API voor de taak
Soms is een pakket installeren het juiste antwoord. Het is niet het eerste antwoord op elk probleem, want Python brengt zelf al heel veel mee.
Een module is een eenheid Python-code die een andere module kan importeren. Veel modules zijn losse .py-bestanden; andere zijn pakketten met meerdere bestanden. Je hebt het idee al gebruikt: import requests haalde geïnstalleerde code erbij. Het verschil is dat de drie modules in dit hoofdstuk met Python zelf meekomen. Ze horen bij de standaardbibliotheek en hebben geen pip install nodig.
Eerst één woord, omdat het voor twee verschillende dingen wordt gebruikt en dat echt verwarrend kan zijn. In dit hoofdstuk betekent de API van een module wat die publiek aanbiedt: de functies, wat je eraan meegeeft en wat je terugkrijgt. Hoofdstuk 11 gebruikt hetzelfde woord voor een dienst waarmee je via het netwerk praat. Dezelfde term, iets heel anders. Hier betekent het “het deel van deze module dat je geacht wordt te gebruiken”.
In dit hoofdstuk bouw je één activiteitenoverzicht. Dat heeft drie taken:
de afstand tussen twee kalenderdatums meten;
activiteiten per categorie tellen;
het midden van een verzameling sessieduren beschrijven.
Dat korte takenlijstje is nuttiger dan modulenamen uit je hoofd leren. Het geeft elke zoekactie een vraag.
Ga van de taak naar één contract
Gebruik de index van de Python-bibliotheek als kaart, niet als een boek om vanaf pagina één te lezen. Voor elke taak:
Schrijf de taak in gewone woorden op: “een ISO-datum verwerken en datums van elkaar aftrekken”.
Zoek de waarschijnlijke module:
datetime.Zoek het object of de functie die de bewerking aanbiedt:
date.fromisoformat.Lees de signatuur, terugkeerwaarde, toegestane invoer en gedocumenteerde fouten.
Probeer één klein voorbeeld voordat je het aan het project toevoegt.
Dezelfde route wijst je voor “labels tellen” naar collections.Counter, en voor “het gemiddelde en de mediaan vinden” naar statistics. We gebruiken alleen die drie modules. De standaardbibliotheek is groot; dit hoofdstuk is geen rondleiding erdoorheen.
Importeren is niet installeren
Deze twee regels importeren allebei een module:
import statistics
import requests
Maar alleen statistics wordt met Python meegeleverd. In het eerdere hoofdstuk over omgevingen installeerde je requests vanuit een pakketindex. Als je pip install statistics uitvoert, sla je de eerste vraag over: biedt Python deze mogelijkheid al?
De URL van de documentatie is nog een aanwijzing. De naslag voor deze modules staat onder docs.python.org/3/library/. Een extern project heeft zijn eigen uitgaven en installatieverhaal.
Je wilt de mediaan van een aantal getallen berekenen. Wat is de beste eerste stap?
Een documentatiepagina toont de signatuur, terugkeerwaarde, toegestane invoer en exceptions van een functie. Wat kun je met die informatie bepalen?
Hierna pas je deze route toe op een echte datumberekening en begin je aan het ene projectbestand van dit hoofdstuk.
Weet je niet welke module bij een taak hoort? Beschrijf de taak aan Monty in gewone woorden en vraag welk deel van de standaardbibliotheek erbij past. Vraag om de documentatiepagina in plaats van de code, zodat je zelf oefent met het lezen van het contract.