Kenmerken van Python

Kenmerken van de programmeertaal Python

Welkom bij Praktisch Python! In dit boek ga je concreet aan de slag met Python. Er zijn geen hoofdstukken waarin wordt uitgelegd wat variabelen of functies zijn, of waarin wordt uitgelegd hoe een while-lus werkt. In plaats daarvan worden deze Python-kenmerken gebruikt om direct applicaties te maken die je rechtstreeks kunt inzetten, of kunt gebruiken als basis of idee voor eigen toepassingen. Dat laatste is natuurlijk nog beter! Maar ook wanneer je nog geen Python-voorkennis hebt en benieuwd bent wat deze programmeertaal in petto heeft, kun je met dit boek aan de slag. Op dit blog zullen we een aantal blogposts besteden aan het boek Praktisch Python. Dit is een deel van het eerste hoofdstuk van Praktisch Python: Kenmerken van de programmeertaal Python.

Kenmerken van Python

De populariteit van Python vertoont een beetje de kenmerken van een golfbeweging. In het begin, met name ten tijde van Python 2, was de taal zeer populair. Daarna zakte de belangstelling een beetje in. Maar de laatste jaren mag Python zich weer op toenemende populariteit verheugen. Dat heeft zonder twijfel te maken met het feit dat softwareontwikkeling steeds complexer wordt. Java en C#/.NET-toepassingen zijn krachtig, maar ook erg ingewikkeld. Zelfs voor een simpele app op Android of IOS moet je al tientallen gigabytes aan schijfruimte opofferen en uren durende installaties doorlopen van tools als Android Studio of XCode.

Eenvoud

Python is daar een aangename uitzondering op. De taal zelf is relatief eenvoudig. Er zijn niet al te veel typeringen en er is een beperkte instructieset. Dit is de kern van Python. Het bevat onderdelen als variabelen, lists, dicts, tuples en functies. Voor het programmaverloop worden voornamelijk if- en while-statements gebruikt, terwijl de data met rechttoe-rechtaan operatoren voor optellen, aftrekken, delen en vermenigvuldigen worden bewerkt. Dat is heel overzichtelijk en in een dag te leren.

Ecosysteem

Dat betekent – gelukkig! – echter niet dat met Python alleen maar eenvoudige programma’s gemaakt kunnen worden. Rondom de kern van Python is een enorm ecosysteem van aanvullende modules en toepassingen beschikbaar. Als je al enige Python-kennis hebt (en dat heb je waarschijnlijk, anders zou je dit boek niet lezen), dan weet je dat dit de Python Package Index is, of kortweg pypi, beschikbaar op pypi.org.

Met een eenvoudige opdracht als pip install <naam_van_package> voeg je een onvoorstelbare hoeveelheid mogelijkheden toe aan je Python-programma. Zo hoef je het wiel niet opnieuw uit te vinden. Er zijn packages voor rekenkundige bewerkingen, grafische user interfaces, frameworks, API’s, hardware- en softwareprotocollen, werken met natuurlijke taal en kunstmatige intelligentie (AI), modules voor specifieke hardware zoals telefoons, calculators en geïntegreerde systemen, en nog veel meer.

Pypi en andere package managers

De Python Package Index laat zich wat dat betreft bijvoorbeeld vergelijken met NPM en Nodejs. Dit is het packagesysteem voor JavaScript- en webdevelopment. C# en .NET-ontwikkeling kennen Nuget als package manager. Java heeft Maven en Gradle als package managers. Hoewel ze allemaal in functionaliteit verschillen, hebben ze in de kern hetzelfde doel: de basismogelijkheden van de desbetreffende programmeertaal uitbreiden.

Standaardbibliotheek

Maar om goede programma’s te schrijven, is het beslist niet nodig altijd Pypi in te zetten. Integendeel. Een kenmerk van Python is dat het met een zeer uitgebreide standaardbibliotheek wordt geleverd. Hiermee kun je rechtstreeks standaardmodules en -packages importeren en belangrijke handelingen uitvoeren. Denk bijvoorbeeld aan een opdracht in je code als:

import math

De Python Standard Library bevat tientallen modules met honderden functies om veelvoorkomende programmeerproblemen op gestandaardiseerde wijze op te lossen.

Hiermee wordt de standaardbibliotheek met allerlei wiskundige functies geïmporteerd (sinus, cosinus, pi, afronden enzovoort). Je hebt math niet eerst apart hoeven installeren. Het wordt meegeleverd met Python. De standaardbibliotheek biedt – zoals de naam al aangeeft – gestandaardiseerde oplossingen, functies en code voor alledaagse programmeerproblemen.

Denk aan het werken met wiskundige functies (zoals hiervoor beschreven), het werken met het besturingssysteem en bestanden, met datums en tijden, met bestandsformaten zoals csv en json, e-mail, HTML en nog veel, veel meer. Een compleet overzicht van de Python-standaardbibliotheek is te vinden op docs.python.org/3/library/.

Niet overal een standaardbibliotheek

Niet alle programmeertalen en -platforms kennen zo’n standaardbibliotheek. In Node.js zijn bijvoorbeeld wél standaardmodules aanwezig voor het werken met bestanden, protocollen, streams enzovoort. Maar een taal als JavaScript heeft geen standaardbibliotheek. Daarom hebben talloze programmeurs allemaal zelf hun functies en reguliere expressies geschreven om bijvoorbeeld een e-mailadres te valideren. Hetzelfde geldt voor het werken met datums en tijden, formuliervalidaties en meer. Een willekeurig bezoekje aan Stack Overflow bevestigt dit JavaScript-kenmerk. Je bent helaas vaak bezig het wiel opnieuw uit te vinden. In Python hoeft dat niet – al moet je natuurlijk wel weten dat er standaard een module aanwezig is die het desbetreffende klusje voor je klaart.

Leesbare code

In Python ligt de nadruk zwaar op leesbare code. Guido van Rossum vond het belangrijk dat programma’s bijna als een gewoon boek te lezen waren. Daarom wordt bijvoorbeeld structuur in een programma aangebracht door inspringing. Er zijn geen accolades zoals in JavaScript en PHP/C/C++/C#/Java. Je hoeft een statement ook niet af te sluiten met een puntkomma. Het einde van een regel betekent simpelweg het einde van een statement. De volgende codeblokken laten dit verschil duidelijk zien.

Hoewel de codevoorbeelden niet hetzelfde doen, is het verschil duidelijk. In Python (hiervoor) worden codeblokken gedefinieerd door inspringing. De standaardinspringing is vier spaties. In JavaScript-code (hierna) maar ook in C of Java worden codeblokken gedefinieerd door { … }:

Weer andere talen werken met sleutelwoorden zoals BEGIN en END of {% … %} om codeblokken te omsluiten. Maar in Python wordt dus uitsluitend inspringing gebruikt.

Na een opdracht die een codeblok begint (zoals het while– en if- statement in de Python-code hiervoor), wordt een dubbele punt geplaatst. De volgende regel begint dan vier spaties ingesprongen (of acht, twaalf enzovoort) ten opzichte van de regel daarvoor.

Duck-typing

Als je meer leest over Python zul je ongetwijfeld het begrip duck-typing tegenkomen. Dit betekent dat het type van een variabele en bijvoorbeeld van een argument/parameter van een functie niet vooraf gedefinieerd hoeft te worden (het mág vaak overigens wel, maar is dus niet verplicht). Bij compilatie vindt dan ook geen typecontrole vooraf plaats. Als het niet klopt, wordt er runtime een foutmelding gegenereerd. Dit is de verantwoordelijkheid van jou als programmeur. Hierin lijkt Python wel een beetje op JavaScript en PHP. Ook dit zijn dynamisch getypeerde programmeertalen (Engels: loosely of dynamically typed). In andere talen (ook weer: C#, Java) moet je vaak vooraf het type van een variabele of argument opgeven. In Python is dat niet verplicht.

Interpreter

Een ander kenmerk is dat een Python-programma niet vooraf hoeft te worden gecompileerd tot een uitvoerbaar bestand zoals in Java of C. De Python-interpreter compileert het programma zodra het wordt gestart en voert het daarna regel voor regel uit. Als er iets niet klopt, volgt een foutmelding en wordt het programma afgebroken. Je bent ongetwijfeld wel eens een scherm tegengekomen als in afbeelding 1.5.

• Achter Traceback staat vaak een bestandsnaam en regelnummer waar de fout is opgetreden.

• Bij xxxError staat welk type fout is opgetreden. Dit kan bijvoorbeeld zijn een TypeError (zoals onderstaande afbeelding), maar ook een ValueError, OSError of nog anders, afhankelijk van de bewerking die op dat moment gaande was.


Fouten worden altijd runtime gegenereerd. Probeer te ontdekken waar de fout is opgetreden en wat het type van de fout is. Dan kun je op basis daarvan verder zoeken.

Goede editors wachten overigens niet af totdat de Python-runtime een fout geeft, maar tonen in de user interface alvast dat code logische fouten bevat. Een reden te meer om te investeren in een goede editor en je code niet in Kladblok te schrijven. Meer over editors lees je verderop in dit hoofdstuk.


In de editor (hier: PyCharm) wordt aangegeven dat het programma een logische fout bevat.

Dat Python-code door een interpreter wordt verwerkt, betekent ook dat je altijd met leesbare code werkt en eenvoudig breekpunten kunt zetten in de code. Dat is handig bij het debuggen. Python wordt niet eerst gecompileerd naar (onleesbare) bytecode en vervolgens uitgevoerd.

Samenvatting

Uiteraard zijn er nog veel meer kenmerken van Python op te noemen, maar de belangrijkste zijn nu genoemd. Samengevat zou je het volgende kunnen stellen: “Python is een multifunctionele programmeertaal die niet wordt vertaald naar bytecode. Met eenvoudig Engels geef je aan wat je bedoelt. Python wordt rechtstreeks uitgevoerd door een interpreter, heeft een dynamisch typesysteem en focust zich op leesbaarheid.”

Praktisch Python

Python is een laagdrempelige taal om te leren programmeren. Het wordt op veel opleidingen en scholen gebruikt. Maar na een eerste kennismaking met lists, dicts, tuples en andere concepten zitten veel beginnende programmeurs met de vraag hoe ze kun kennis nu in real-life projecten kunnen inzetten. Welkom bij Praktisch Python!

In dit boek ga je concreet aan de slag met de meest gebruikte programmeertaal ter wereld. Er zijn geen aparte hoofdstukken waarin wordt uitgelegd wat variabelen of functies zijn, of hoe een while-lus werkt. In plaats daarvan worden deze Python-kenmerken gebruikt om direct applicaties te maken die je rechtstreeks kunt inzetten, of kunt gebruiken als basis voor je eigen toepassingen.

Zelfs als je nog geen gedegen Python-voorkennis hebt, kun je met dit boek aan de slag. Gaandeweg maak je kennis met de belangrijkste kenmerken en zie je hoe je de voorbeeldprojecten op je eigen computer uitvoert. Van alle voorbeelden kun je de code inclusief extra, verhelderende commentaren downloaden.


Een gedachte over “Kenmerken van de programmeertaal Python”

Geef een reactie

Deze site gebruikt Akismet om spam te verminderen. Bekijk hoe je reactie-gegevens worden verwerkt.