1 2021-11-22: Tools¶
Development tools:
pipx: installeer commandline Python programma’s
black: formateer Python broncode
isort: sorteer imports
flake8: “linter”
pylint: “linter”
poetry: vergemakkelijk gebruik van virtual environments en packaging
1.1 Intro¶
We gebruiken bestanden in de prog4-exercises repository om de tools te leren gebruiken.
1.1.1 Opgave¶
Update je GIT-fork van prog4-exercises.
1.2 pipx¶
pipx laat toe om Python commandline programma’s makkelijk te gebruiken vanuit een commandoprompt venster.
1.2.1 Opgave¶
Installeer pipx met:
python3 -m pip install --user pipx
python3 -m pipx ensurepath
Zie de pipx website op https://pypa.github.io/pipx/.
1.3 PEP8 (style guide)¶
Voor vele programmeertalen bestaan er documenten die aangeven hoe je je code best formateert. Zulke documenten noemt men ‘style guides’. Deze hebben geen betrekking op de werking van de code, maar op het uitzicht ervan (en dus de leesbaarheid).
PEP 8: is de styleguide voor Python. In dit document wordt bijvoorbeeld aangegeven dat je:
best spaties gebruikt om indentatie aan te geven
dat je per 4 spaties dient te werken
dat je best maximaal 79 letter op 1 regel gebruikt
hoe je whitespace best gebruikt
dat je best de volgende namen voor variabelen vermijdt: l, O, I (anekdote)
Er bestaan een aantal tools die je hiermee helpen. flake8 is een tool die je mogelijke problemen aangeeft. black is een tool die zorgt dat je source code automatisch aan PEP8 voldoet.
De volledige PEP8 style guide vind je op: https://www.python.org/dev/peps/pep-0008/
1.4 flake8¶
Gegeven een bestand main.py:
1import math
2
3
4
5
6def kwadraat( x ) :
7 y = 1
8 return x** 2
Geeft flake8 volgende waarschuwingen:
main.py:6:1: E303 too many blank lines (4)
main.py:6:4: E271 multiple spaces after keyword
main.py:6:16: E201 whitespace after '('
main.py:6:18: E202 whitespace before ')'
main.py:6:20: E203 whitespace before ':'
main.py:7:5: F841 local variable 'y' is assigned to but never used
main.py:7:6: E221 multiple spaces before operator
main.py:8:13: E225 missing whitespace around operator
1.4.1 Opgave¶
Installeer flake8 met behulp van pipx.
Analyseer de code van part_style.py in prog4-exercises met flake8.
Tip
This is a note admonition.
Als je het flake8 commando niet kan opstarten vanuit je commandoprompt, controlleer dan of het pad naar je %USERPROFILE%/.local/bin in je Windows PATH variabele zit. Je kan je Windows PATH variabele bekijken via het volgende commando in een commandoprompt venster:
echo %PATH%
Om de PATH variabele aan te passen kan je volgende instructies volgen: https://www.java.com/en/download/help/path.html
1.5 black¶
Gegeven volgende code:
import math
v = 1
def kwadraat ( x) :
return x ** 2
Na het commando:
black mijncode.py
Herformatteert black dit zodat het resultaat er als volgt uitziet:
import math
v = 1
def kwadraat(x):
return x ** 2
1.5.1 Opgave¶
Installeer black met behulp van pipx.
Formateer de broncode van part_style.py met black.
1.6 isort¶
Gegeven de volgende code:
import sys
import csv
import math
import pygame
import sys
Maakt isort hier het volgende van:
import csv
import math
import sys
import pygame
De imports worden gegroepeerd en vervolgens alfabetisch gesorteerd: Eerst komen alle imports van modules die in de standaardbibliotheek van Python zitten. Vervolgens een wit-regel en dan de andere imports.
1.6.1 Opgave¶
Installeer black met behulp van pipx.
Sorteer de imports van part_style.py met isort.
1.7 poetry¶
Het installeren en up-to-date houden van Python packages, en het beheren van virtual environments wordt door velen als onpraktisch gezien.
Er werden dan ook een aantal systemen ontwikkeld om deze handelingen te vereenvoudigen:
pipenv
poetry
pyflow
PDM
pipenv en poetry zijn de populairste hiervan.
Installeer poetry met behulp van pipx.
Maak een nieuw project aan met poetry:
poetry new mijnproject
poetry add pygame
poetry add -D pytest
1.8 Documentatie¶
Commentaar kan je in Python ingeven door de tekst vooraf te laten gaan door het “#” teken:
# Dit is commentaar
v = "hello world"
Dit is o.a. bijzonder nuttig om aan te geven wat er in de code gedaan wordt:
# Gebruik stelling van Pythagoras om schuine zijde te berekenen
c = math.sqrt(a**2 + b**2)
1.9 Docstrings¶
Een docstring is een string die als eerste regel in een module, functie, klasse of methode geschreven wordt. Deze string wordt dan als de omschrijving voor die module, functie, klasse of methode gebruikt. Bijvoorbeeld:
def kwadraat(x):
"""Geef het kwadraat van x terug"""
return x**2
def bmi(g, l):
"""Geef het BMI voor een gewicht g in kilogram en lengte l in meter"""
return g/l**2