Robert Smallshire is directeur en oprichter van consultancy-, trainings- en ontwikkelbureau Sixty North.
Meer over de auteursHandboek Python
Paperback Nederlands 2019 2e druk 9789463561143Samenvatting
Het Handboek Python is een praktische en grondige inleiding in de programmeertaal Python en voorziet je van het gereedschap en inzicht dat je nodig hebt om een productieve deelnemer te worden aan bijna elk Python-project. Python is een omvangrijke taal, en de auteurs helpen je bij het bouwen van een degelijke fundering, maken je wegwijs in het soms verwarrende universum van Python en zorgen ervoor dat je na het lezen zelfstandig verder kunt leren.
Dit boek is voornamelijk bedoeld voor mensen met wat programmeerervaring in een andere taal. Programmeer je momenteel in een van de bekende imperatieve of objectgeoriënteerde talen als C++, C# of Java, dan heb je voldoende kennis om dit boek optimaal te gebruiken. Ligt je expertise echter meer bij andere soorten programmeertalen, dan zal je geen onoverkomelijke problemen tegenkomen.
Tot de behandelde onderwerpen behoren:
- Python downloaden en installeren
- Werken met operatoren, gegevenstypen en lussen
- Python-modules ontwikkelen
- Werken met het objectmodel, ingebouwde typen en collectietypen
- Werken met comprehensions, iterables en generators
- Objectgeoriënteerd programmeren: werken met klassen
- Werken met bestanden
- Exceptions verwerken, testen uitvoeren en debuggen
Specificaties
Lezersrecensies
Over Austin Bingham
Inhoudsopgave
Errata en suggesties xvii
Gebruikte conventies in dit boek xvii
Welkom lezer! xix
Python-promotie xx
Overzicht xxi
0 Inleiding – Wat is Python? 1
Het is een programmeertaal! 2
Versies van de taal Python 3
Het is een standaardbibliotheek! 4
Het is een filosofie 4
Je reis begint... 5
1 Aan de slag 7
Python 3 ophalen en installeren 8
Windows 8
macOS 9
Linux 10
De shell van Python starten 11
De shell verlaten 12
Windows 13
Mac/Unix 13
Codestructuur en significante inspringing 13
De Python-cultuur 17
Modules uit de standaardbibliotheek importeren 18
Hulp ontvangen 19
Fruit tellen met math.factorial() 21
Verschillende soorten getallen 21
Primitieve gegevenstypen 23
int 23
float 24
None 26
bool 26
Relationele operatoren 28
Rijke vergelijkingsoperatoren 29
Programmaverloop: if en while 29
Conditioneel programmaverloop: de opdracht if 29
if...else 30
if...elif...else 31
Conditionele herhaling: de while-lus 32
Samenvatting 35
2 Strings en collecties 37
str – een onveranderlijke reeks Unicode-codepunten 38
Strings markeren 38
Zen-moment 39
Concatenatie van aangrenzende strings 40
Strings met meerdere regels en newlines 40
Raw-strings 42
De constructor str 43
Strings als sequenties 43
Stringmethoden 43
Strings met Unicode 45
bytes – een onveranderlijke reeks bytes 46
Literal bytes 46
Converteren tussen bytes en str 47
list – een reeks objecten 50
dict – sleutels met waarden combineren 51
For-lussen – een reeks items doorlopen 52
Alles samenvoegen 53
Samenvatting 57
3 Modulariteit 59
Code in een .py-bestand ordenen 60
Python-programma’s in de shell van het besturingssysteem uitvoeren 61
Modules in de shell importeren 62
Functies definiëren 62
Module in functies ordenen 64
__name__ en modules vanaf de opdrachtregel uitvoeren 65
Het uitvoeringsmodel van Python 67
De verschillen tussen modules, scripts en programma’s 68
Een functie main met opdrachtregelargument maken 68
Opdrachtregelargumenten accepteren 72
Zen-moment 74
Docstrings 75
Commentaar 78
Shebang 79
Uitvoerbare Python-programma’s bij Linux en Mac 79
Uitvoerbare Python-programma’s bij Windows 79
Samenvatting 80
4 Ingebouwde typen en het objectmodel 83
De aard van objectreferenties in Python 84
Een referentie opnieuw toekennen 84
Een referentie aan een andere toekennen 85
De waarde en de identiteit van objecten verkennen met id() 87
Met is op gelijkwaardigheid van identiteit testen 87
Muteren zonder te muteren 88
Verwijzingen naar muteerbare objecten 90
Gelijkheid van waarde (equivalentie) versus gelijkheid van identiteit 92
De semantiek van argumenten – meegeven als objectreferentie 93
Externe objecten in een functie aanpassen 93
Nieuwe objecten in een functie koppelen 94
Het meegeven van argumenten koppelt referenties 96
De semantiek van return in Python 97
Meer informatie over functieargumenten 98
Standaardwaarden voor parameters 98
Sleutelwoordargumenten 99
Wanneer worden standaardargumenten geëvalueerd? 99
Het typesysteem van Python 102
Dynamische typering in Python 102
Sterke typering in Python 103
Variabelendeclaratie en scope 104
LEGB 104
Scopes in de praktijk 105
Identieke namen in globale en lokale scope 105
Het sleutelwoord global 106
Zen-moment 107
Alles is een object 108
Een functie inspecteren 108
Samenvatting 110
5 Ingebouwde collectietypen 113
Inleiding 114
tuple – een onveranderlijke reeks objecten 114
Literal-tupels 114
Toegang tot de elementen van een tupel 114
De lengte van een tupel 114
Iteratie langs een tupel 115
Tupels samenvoegen en herhalen 115
Geneste tupels 115
Tupels met één element 115
Lege tupels 116
Optionele haakjes 116
Tupels retourneren en uitpakken 116
Variabelen uitwisselen door tupels uit te pakken 117
De tupelconstructor 118
Lidmaatschapstests 118
Strings in actie 118
De lengte van een string 118
Strings samenvoegen 119
Meerdere strings samenvoegen 120
Strings splitsen 120
Zen-moment 121
Strings opdelen 121
Stringopmaak 122
Andere stringmethoden 123
range – een collectie gelijkmatig verdeelde integers 124
Startwaarde 124
Het argument step 125
Geen gebruikmaken van range: enumerate() 126
list in actie 127
Negatieve indexering voor lijsten (en andere reeksen) 127
Lijsten slicen 128
Lijsten kopiëren 131
Ondiepe kopieën 132
Lijsten herhalen 136
Lijstelementen zoeken met index() 138
Lidmaatschap testen met count() en in 139
Lijstelementen via de index verwijderen met del 139
Lijstelementen via de waarde verwijderen met remove() 139
Elementen aan een lijst toevoegen 140
Lijsten samenvoegen 140
Lijstelementen ordenen 141
Externe herschikking 142
dict – woordenboeken 143
Woordenboeken kopiëren 144
Woordenboeken bijwerken 145
Itereren langs woordenboeksleutels 145
Itereren langs woordenboekwaarden 146
Itereren langs sleutel-waardeparen 147
Op lidmaatschap testen bij woordenboeksleutels 147
Woordenboekitems verwijderen 147
Aanpasbaarheid van woordenboeken 148
Leesbaar afdrukken 148
set – ongeordende verzameling unieke elementen 149
De set-constructor 150
Itereren langs sets 151
Lidmaadschapstest voor sets 151
Elementen aan sets toevoegen 151
Elementen uit sets verwijderen 152
Sets kopiëren 152
Rekenkundige bewerkingen bij set 153
Verschil 154
Collectieprotocollen 156
Het protocol container 157
Het protocol sized 157
Het protocol iterable 157
Het protocol sequence 157
Andere protocollen 158
Samenvatting 159
6 Exceptions 161
Wat is een exception? 162
Uitzonderingen en het programmaverloop 162
Exceptions verwerken 164
Meerdere exceptions verwerken 165
Programmeerfouten 167
Lege blokken – de opdracht pass 168
Exception-objecten 168
Onverstandige retourcodes 169
Exceptions opnieuw opwerpen 170
Exceptions maken deel uit van de API van je functie 171
Door Python opgeworpen exceptions 173
Exceptions afvangen 173
Exceptions expliciet opwerpen 174
Exceptions vroeg detecteren 175
Exceptions, API’s en protocollen 177
IndexError 178
ValueError 178
KeyError 178
Geen voorzorgsmaatregelen nemen tegen TypeError 179
Pythonische stijl – EAFP versus LBYL 180
Opruimklussen 182
Zen-moment 183
Platformspecifieke code 184
Samenvatting 186
7 Comprehensions, iterables en generators 187
Inleiding 188
Comprehensions 188
Lijst-comprehensions 188
Set-comprehensions 190
Woordenboek-comprehensions 190
Comprehensions filteren 192
Zen-moment 193
Iteratieprotocollen 194
Een voorbeeld van de iteratieprotocollen 194
Een praktischer voorbeeld van de iteratieprotocollen 195
Generatorfuncties 196
Het sleutelwoord yield 197
Generators zijn iterators 197
Wanneer wordt generatorcode uitgevoerd? 199
Een expliciete toestand in de generatorfunctie behouden 200
Luie generator-pipelines 202
Luiheid en het oneindige 203
Generatorexpressies 204
Batterijen meegeleverd: iteratie-tools 206
De module itertools 207
Sequenties met Booleaanse waarden 208
Sequenties samenvoegen met zip() 208
Luie concatenatie van sequenties met chain() 210
Alles samenvoegen 210
Samenvatting 211
Generators 211
Iteratie-tools 212
8 Met klassen nieuwe typen definiëren 213
Inleiding 214
Klassen definiëren 215
Instantiemethoden 216
Instantie-initialisatie 217
Het ontbreken van access-modifiers 218
Validatie en invarianten 219
Een tweede klasse toevoegen 220
Collaborerende klassen 222
Zen-moment 224
Stoelen reserveren 225
Stoelen aan passagiers toewijzen 228
Methoden voor implementatiedetails 232
relocate_passenger() implementeren 233
Beschikbare stoelen tellen 235
Soms is een functie het enige object dat je nodig hebt 236
De klasse Flight instapkaarten laten maken 237
Polymorfisme en duck-typing 238
Aircraft herstructureren 240
Overerving en het delen van implementaties 243
Een basisklasse voor Aircraft 243
Overerving van Aircraft 244
Algemene functionaliteit in een basisklasse zetten 245
Samenvatting 247
9 Bestanden en bronbeheer 249
Bestanden 250
Binaire en tekstmodi 250
Het belang van codering 251
Een bestand openen om naar te schrijven 251
Naar een bestand schrijven 252
Bestanden sluiten 253
Het bestand buiten Python 254
Bestanden lezen 254
Gegevens aan bestanden toevoegen 256
Bestandsobjecten als iterators 257
Contextmanagers 259
Bronnen beheren met finally 261
with-blokken 262
Zen-moment 263
Binaire bestanden 264
Het bestandsformaat BMP 264
Bitoperatoren 269
Een BMP-bestand schrijven 270
Binaire bestanden lezen 272
Bestandachtige objecten 274
Je hebt al bestandachtige objecten gezien! 274
Bestandachtige objecten gebruiken 274
Andere bronnen 276
Samenvatting 279
10 Tests uitvoeren met de standaardbibliotheek 281
Module unittest 282
Testcases 282
Fixtures 282
Assertions 283
Een voorbeeld van een unittest: tekstanalyse 283
De eerste tests uitvoeren 284
De test laten slagen 285
Met fixtures tijdelijke bestanden maken 286
De nieuwe fixtures gebruiken 287
Met assertions gedrag testen 289
Regels tellen 290
Tekens tellen 291
Testen op exceptions 293
Testen of een bestand bestaat 294
Zen-moment 295
Samenvatting 296
11 Debuggen met PDB 297
Inleiding 298
Opdrachten van de debugger 298
Het debuggen van een palindroom 299
Naar fouten zoeken met PDB 301
Oneindige lussen proefondervindelijk opsporen 303
Expliciete breekpunten instellen 304
Door de uitvoering stappen 306
De bug repareren 307
Samenvatting 309
A Virtuele omgevingen 311
Inleiding 312
Een virtuele omgeving maken 312
Een virtuele omgeving activeren 313
Een virtuele omgeving deactiveren 313
Andere tools voor virtuele omgevingen 314
B Pakketten maken en distributie 315
Inleiding 316
Een pakket configureren met distutils 316
Installeren met distutils 319
Pakketten maken met distutils 320
C Pakketten van derden installeren 325
Introductie tot pip 326
Python Package Index 326
Installeren met pip 327
Lokale pakketten installeren met pip 328
De installatie van pakketten ongedaan maken 328
Nawoord 329
Index 331
Rubrieken
- advisering
- algemeen management
- coaching en trainen
- communicatie en media
- economie
- financieel management
- inkoop en logistiek
- internet en social media
- it-management / ict
- juridisch
- leiderschap
- marketing
- mens en maatschappij
- non-profit
- ondernemen
- organisatiekunde
- personal finance
- personeelsmanagement
- persoonlijke effectiviteit
- projectmanagement
- psychologie
- reclame en verkoop
- strategisch management
- verandermanagement
- werk en loopbaan