Python (programmeertaal)

Uit Wikipedia, de vrije encyclopedie
Ga naar: navigatie, zoeken
Python
Python logo and wordmark.svg
Paradigma imperatief, objectgeoriënteerd
Verschenen in 1991
Ontworpen door Guido van Rossum
Huidige versie 2.6.9 (29 oktober 2013)
2.7.6 (10 november 2013)
3.2.5 (15 mei 2013)
3.3.4 (9 februari 2014)
3.4.0 (17 maart 2014)
Typesysteem Dynamisch, sterk
Implementaties CPython, Jython en anderen
Dialecten Stackless Python
Beïnvloed door ABC, Algol-68, C, Haskell, Icon, Lisp, Modula-3, Perl, Java
Invloed op Boo, Groovy, Ruby, Cobra
Besturingssysteem Multiplatform
Licentie Python Software Foundation License
Website (en) Officiële website
Portaal  Portaalicoon   Informatica
Een stuk broncode in Python met syntaxiskleuring.

Python is een programmeertaal die begin jaren 90 ontworpen en ontwikkeld werd door Guido van Rossum, destijds verbonden aan het Centrum voor Wiskunde en Informatica (daarvoor Mathematisch Centrum) in Amsterdam. De taal is mede gebaseerd op inzichten van professor Lambert Meertens die een op BASIC gebaseerde taal genaamd ABC had ontworpen, maar dan met allerlei zeer geavanceerde datastructuren. Inmiddels wordt de taal doorontwikkeld door een enthousiaste groep, geleid door Van Rossum, recent nog werkzaam bij Google, maar nu in dienst van Dropbox. Deze groep wordt ondersteund door vrijwilligers op het internet.

De ontwikkeling van Python wordt geleid door de Python Software Foundation. Python heeft zijn naam te danken aan het favoriete televisieprogramma van Guido van Rossum, Monty Python.

Kenmerken[bewerken]

Python gebruikt als een van de weinige talen de mate van 'inspringing' van de regel, ook wel: indentatie genoemd, als indicatie van gelaagdheid van de verschillende onderdelen van het programma. Dit is iets wat Jaap van Ganswijk, de ontwerper van JPL en UHL al sinds het begin van de jaren tachtig voorstaat, maar dat ook anderen wel geopperd hebben. Andere talen verschillen hierin door het gebruik van aparte statements, zoals: 'begin' en 'end' (bij Pascal), of accolades '{' en '}' (bij C) om een blokstructuur aan te duiden. Door deze inspringing en een aantal andere elementen kan de structuur van de taal worden vergeleken met de structuur van de pseudoprogrammeertaal die in veel gevallen wordt gebruikt in de literatuur om algoritmen uit te leggen.

Python kent voor variabelen het onderscheid tussen wijzigbare variabelen (mutable) en variabelen met een vaste waarde (immutable). Dit verschil, dat door beginners vaak alleen als verwarrend wordt gezien, is voor gevorderd gebruik heel nuttig.

Python implementeert het zogenaamde duck-typing. Dit houdt in dat het type van een variabele en het type van een argument van bijvoorbeeld een functie niet gedefinieerd hoeft te worden. Bij compilatie vindt (dus) ook geen typecontrole plaats. Runtime wordt slechts gecontroleerd of de methoden etcetera die worden gebruikt voor het betreffende object gedefinieerd zijn. Als dat niet zo is, volgt een foutmelding.

In de meeste andere programmeertalen is dit hetzij onmogelijk, hetzij wordt het als slechte programmeerstijl beschouwd. Die gebruiken wat in Python LBYL (Look Before You Leap) programmeerstijl heet.

Net als in veel andere moderne scripttalen wordt in Python geheugenruimte automatisch gereserveerd voor nieuwe variabelen of variabelen die groeien, en weer vrijgegeven als er geen referenties meer zijn aan die variabelen (garbage collection). Op deze manier wordt de programmeur een hoop werk bespaard dat hij in sommige "lagere" talen (zoals C) wel moet doen.

Python wordt geleverd met een uitgebreide bibliotheek om van alles en nog wat standaard te kunnen bewerken. Het is erg eenvoudig om in Python herbruikbare code te schrijven. Doordat veel van de bibliotheken die mensen schrijven gratis aan anderen ter beschikking wordt gesteld, groeien de mogelijkheden van de bibliotheek voortdurend. Python wordt zo tot een programmeertaal die voor razendsnel ontwikkelen van een nieuwe applicatie kan worden gebruikt, zonder dat de daarbij geproduceerde code onleesbaar wordt.

Overigens is Python een erg zuivere taal met weinig uitzonderingen. Het is voor alle gebruik gratis op het internet te krijgen, en werkt op zeer veel verschillende types van computers.

Syntaxis[bewerken]

Vertoning van output[bewerken]

Vertoning van output op het scherm gebeurt met de print-functie:

print("Hallo wereld")
>> Hallo wereld
 
print(3*2)
>> 6
 
print("3*2")
>> 3*2

Python gaat na de print-functie meteen een regel verder. Als je op dezelfde regel nog iets wil printen, gebruik je het end-argument met een string als invoer.

print("Hallo")
print("wereld")
>> Hallo
>> wereld
 
print("Hallo", end=" ")
print("wereld")
>> Hallo wereld

In Python maakt het overigens niet uit of je de af te drukken string tussen enkele of dubbele aanhalingstekens zet, als het maar consequent gebeurt.

print("'s morgens zeg ik", ':', ' "hallo!"')
>> 's morgens zeg ik: "hallo!"

Commentaar[bewerken]

Om tekstcommentaar te plaatsen in een script, dat niet uitgevoerd mag worden kan het #-teken worden gebruikt. Voor commentaar met meerdere regels, wordt een blok met drie dubbele aanhalingstekens gebruikt.

# print("Deze regel wordt niet uitgevoerd")
 
"""
print("En deze regels?")
print("Ook niet!")"""
 
print("Deze regel wel")
>> Deze regel wel

Variabelen en feedback[bewerken]

Variabelen zijn containers die een waarde toegewezen krijgen of hebben gekregen. Variabelen kunnen worden gemanipuleerd, gebruikt of getoond. In Python hoeft de variabele niet van tevoren te worden gedeclareerd. Om de invoer van een gebruiker op te kunnen vragen, wordt de input-functie gebruikt. De invoer wordt vervolgens in een variabele gestopt.

# Werking van variabelen
som = 4*3
print(som)
>> 12
 
# Manipulatie van variabelen
vijf = 4
drie = 3
print(vijf + drie)
>> 7
correctie = 5
vijf = correctie
print(vijf + drie)
>> 8
 
# Nog een voorbeeld van manipulatie
breedte = 20
hoogte = 10
oppervlakte = breedte * hoogte
print(oppervlakte)
>> 200
hoogte = hoogte * 2 # hoogte *= 2 mag ook
oppervlakte = breedte * hoogte
print(oppervlakte)
>> 400
 
# Invoer van gebruiker vragen
naam = raw_input("Wat is uw naam?")
print("Hallo " + naam + "!")
>> Wat is uw naam?
<< Monty
>> Hallo Monty!

Expressies[bewerken]

Expressies worden met de standaard vergelijkingsoperatoren bepaald, en heeft als uitkomst de waarden True of False. Om een valse overeenkomst te testen, wordt een uitroepteken gebruikt.

hoog = 5
laag = 2
print(laag < hoog)
>> True
print(laag == 3)
>> False
print(laag != 3)
>> True

Booleaanse operatoren[bewerken]

Bij een expressie kunnen de booleaanse operatoren or en and worden gebruikt.

hoog = 9
laag = 3
print(hoog < laag or laag == 3) # Test of een van de expressies waar is
>> True
print(hoog < laag and laag == 3) # Test of beide expressies waar zijn
>> False

Beslissingen[bewerken]

Beslissingen worden genomen met een if-statement, aan de hand van een expressie. Deze kunnen worden aangevuld met een else-statement en elif-statements.

# Importeren van library voor het tonen van willekeurige getallen
import random
win = random.randint(1,3)
 
print("Welkom bij Let's make a deal. Kies een deur.")
print("[1] Deur Een")
print("[2] Deur Twee")
print("[3] Deur Drie")
deur = int(input("Geef een keuze op:"))
 
# If-else-blok
if deur == win:
    print("Achter de deur zit een koffer met een miljoen euro. Jij wint!")
else:
    print("Achter de deur bevindt zich een pakezel waarmee je terug naar huis kan gaan. Jij verliest!")
 
# Ervan uitgaand dat de "win"-variabele hetzelfde is als de opgegeven invoer
...
>> Geef een keuze op:
<< 3
>> Achter de deur zit een koffer met een miljoen euro. Jij wint!

Datastructuren[bewerken]

De meest-voorkomende datastructuur in Python is de array. Deze bestaat uit een index van verschillende soorten eenheden. Het eerste indexgetal is hierbij altijd een nul.

kleuren = ["rood", "geel"]
 
print(kleuren[1])
>> geel
print(kleuren)
>> ['rood', 'geel']
kleuren.append("blauw")
print(kleuren)
>> ['rood', 'geel', 'blauw']

Repetitie[bewerken]

Python heeft twee lusconstructies om een statement herhaaldelijk uit te voeren, namelijk de while-lus en de for-lus.

For-statement[bewerken]

De for-lus is gemaakt om datastructuren af te lopen. Hij verschilt van de meeste andere for-lussen uit programmeertalen en is het best te vergelijken met de foreach-lus uit PHP).

# Voorbeeld met for-lussen
kleuren = ["rood", "geel", "blauw", "zwart", "oranje", "paars", "groen"]
hoeveelheid = 0 # Deze variabele wordt gemanipuleerd in de for-lus, dus moet hij hier vooraf worden gedeclareerd
 
for aantal in kleuren:
    hoeveelheid += 1
 
print("In mijn doos met kleurpotloden zitten " + str(hoeveelheid) + " potloden.") 
# Integers kunnen niet worden geconcateneerd met strings, vandaar de str-functie
# Zie ook http://nl.wikipedia.org/wiki/Concatenatie
 
>> In mijn doos met kleurpotloden zitten 7 potloden.
 
# Nog een voorbeeld met for-lussen
kleuren = ["rood", "geel", "blauw", "zwart", "oranje", "paars", "groen"]
 
print("Mijn doos met kleurpotloden bevat een", end=" ")
 
for kleur in kleuren:
    if kleur == kleuren[-1]: # Vergelijking met laatste element uit lijst
        print(kleur + " potlood.")
    elif kleur == kleuren[-2]: # Vergelijking met een-na-laatste element uit lijst
        print(kleur, end=" en ")
    else:
        print(kleur, end=", ")
 
>> Mijn doos met kleurpotloden bevat een rood, geel, blauw, zwart, oranje, paars en groen potlood.

While-statement[bewerken]

De while-lus herhaalt een statement aan de hand van een expressie:

getal = 1
 
print("Ik kan tot tien tellen!")
 
while getal <= 10:
    print(getal)
    getal += 1
 
>> Ik kan tot tien tellen!
>> 1
>> 2
>> 3
...

Bij for- en while-statements kan de range-functie worden gebruikt. Deze heeft de eigenschappen van een array.

print("Ik kan tot tien tellen!")
 
for getal in range(1, 11): # Laatste getal wordt niet meegeteld
    print(getal)
 
# Output hetzelfde als vorige voorbeeld

Abstractie[bewerken]

Functies[bewerken]

Functies worden gemaakt met het def-statement, met of zonder argumenten.

def kwadrateren(getal):
    return getal*getal
 
print(kwadrateren(6))
>> 36

Foutafhandeling[bewerken]

Python heeft geavanceerde procedures voor exception handling, die worden gebruikt in de zogenaamde EAFP (Easier to Ask Forgiveness than Permission) stijl van programmeren. Het volgende geldt als acceptabele Pythoncode:

try:
  x = 1 / y
except ZeroDivisionError:
  x = 0

Python op het web[bewerken]

Python kan ook gebruikt worden om webapplicaties te ontwikkelen. Hiervoor bestaan allerlei webapplicatie-frameworks, zoals Django, en servertechnologieën, zoals mod python. Men heeft ook een standaard gedefinieerd, genaamd Web Server Gateway Interface (WSGI), voor de communicatie tussen webservers en webapplicatie-frameworks. Op deze manier kunnen portable webapplicaties en frameworks geschreven worden in Python.

Zie ook[bewerken]

Externe link[bewerken]

Wikibooks Wikibooks heeft een studieboek over dit onderwerp: Cursus programmeren in Python.