Skip to content
Programmeren in Python, leer de nieuwste technieken
Programmeren in PythonProgrammeren in Python
  • Home
  • Blog
  • Documentatie
  • Cursussen
  • Tools
    • Python Paste
Programmeren in PythonProgrammeren in Python
  • Home
  • Blog
  • Documentatie
  • Cursussen
  • Tools
    • Python Paste

Introductie

3
  • 1.1 Wat is Python?
  • 1.2 Python installatie
  • 1.3 PyCharm Installatie

Basisprogrammering

6
  • 2.1 Python Basis: Variabelen, Datatypes en Operatoren
  • 2.2 Python if else (en elif)
  • 2.3 Python list (Array, Lijsten)
  • 2.4 Lussen: for, while, break, continue
  • 2.5 Functies: Definities, Parameters en Terugkeerwaarden
  • 2.6 Foutafhandeling: try, except, else, finally

Datatypes

13
  • 3.1 Introductie tot Geavanceerde Datatypes
  • 3.2 Python Tuple
  • 3.3 Python Set
  • 3.4 Python Dictionary
  • 3.5 Werken met Strings en String-methoden
  • 3.6 Collections Module: Krachtige Tools in Python
  • 3.7 Iterators en Generators
  • 3.8 List Comprehensions
  • 3.9 Geavanceerde Sortering
  • 3.10 Werken met Multi-dimensionale Data
  • 3.11 Typing en Datatypes
  • 3.12 Itertools voor Geavanceerde Iteraties
  • 3.13 Data Conversies

Modules

8
  • 4.1 Wat zijn Modules en Waarom zijn ze Belangrijk?
  • 4.2 Werken met Ingebouwde Modules
  • 4.3 Installeren en Gebruiken van Externe Pakketten
  • 4.4 Eigen Modules Maken
  • 4.5 Introductie tot Pakketten
  • 4.6 Importeren en Namespaces Begrijpen
  • 4.7 Geavanceerd: Relatief Importeren
  • 4.8 Organiseren van Grotere Projecten

Data Analyse

3
  • 5.1 Python Dataframe en Data Opschonen met Pandas
  • 5.2 Python Pandas Basisstatistieken en Data-analyse
  • 5.3 Python Numpy (NpArray): De Kracht van Numerieke Berekeningen

Webontwikkeling

5
  • 7.1 Inleiding tot Webontwikkeling
  • 7.2 HTTP-Verzoeken met requests: Communiceren met het Web
  • 7.3 Webscraping met BeautifulSoup: Data van het Web Halen als er geen APIs zijn
  • 7.4 Python Flask, een webserver & API tutorial
  • 7.5 WSGI & WebOb

Deploy

1
  • Deploy met Supervisor op Ubuntu
View Categories
  • Home
  • Documentatie
  • Modules
  • 4.7 Geavanceerd: Relatief Importeren

4.7 Geavanceerd: Relatief Importeren

3 minuten leestijd

Als je projecten groeit, wordt het belangrijker om je code goed te organiseren. Vaak werk je dan met pakketten en modules om je functies en klassen logisch te groeperen. Maar hoe zorg je ervoor dat deze modules elkaar kunnen gebruiken zonder dat je complexe of absolute paden hoeft te schrijven? Hier komt relatieve import in beeld!

In dit hoofdstuk leer je wat relatieve import is, hoe je het gebruikt, en waarom het een krachtig hulpmiddel is bij het bouwen van grote projecten. 🎉

Wat is relatieve import? #

Relatieve import betekent dat je een module importeert ten opzichte van de huidige module waarin je werkt. In plaats van het volledige pad naar een module te specificeren (absolute import), gebruik je een relatieve notatie gebaseerd op de locatie van de huidige module.

Relatieve import in actie #

Met relatieve import kun je eenvoudig functies of klassen gebruiken die in een andere module binnen hetzelfde pakket staan. Dit doe je met puntnotatie:

  • from .module1 import functie
    Dit betekent: “Importeer functie uit module1, dat zich in dezelfde map bevindt.”

Voorbeeldproject: Een pakket met modules #

Stel dat je een pakket hebt genaamd mijn_pakket, met de volgende structuur:

mijn_pakket/
├── __init__.py
├── module1.py
└── module2.py
Python

  • module1.py bevat een functie functie_uit_module1:
# module1.py
def functie_uit_module1():
    print("Hallo vanuit module1!")
Python

  • module2.py wil deze functie gebruiken:
# module2.py
from .module1 import functie_uit_module1

def functie_uit_module2():
    print("Hallo vanuit module2!")
    functie_uit_module1()
Python

Hoe modules binnen hetzelfde pakket importeren #

  1. Relatieve import gebruiken: Gebruik de punt (.) om te verwijzen naar de module binnen dezelfde map:pythonCopy code
from .module1 import functie_uit_module1
Python

  1. Waarom werkt dit?
    • De enkele punt (.) verwijst naar de map waarin de huidige module zich bevindt.
    • Hierdoor kun je eenvoudig modules binnen hetzelfde pakket aanspreken, zonder het volledige pad te schrijven.
  2. Functie gebruiken in een ander script: Stel dat je een script hebt genaamd main.py buiten het pakket, waarin je functies uit module2 gebruikt:
from mijn_pakket.module2 import functie_uit_module2

functie_uit_module2()
Python

Uitvoer:

Hallo vanuit module2!
Hallo vanuit module1!
Python

Wanneer gebruik je relatieve imports? #

Relatieve imports zijn vooral handig bij grote projecten waarin je meerdere modules en pakketten hebt. Ze bieden een aantal voordelen, maar hebben ook specifieke situaties waarin ze het beste tot hun recht komen.

1. Grote projecten met pakketten #

Bij grote projecten is het gebruikelijk om code in pakketten en subpakketten te organiseren. Relatieve imports maken het eenvoudiger om modules binnen hetzelfde pakket te gebruiken zonder dat je afhankelijk bent van de volledige padstructuur.

2. Voordelen van relatieve imports #

  • Flexibiliteit:
    Als de structuur van je project verandert, blijven relatieve imports vaak werken, zolang de interne structuur hetzelfde blijft.
  • Leesbaarheid:
    Door relatieve imports kun je direct zien dat een module afkomstig is uit hetzelfde pakket.

3. Absolute imports versus relatieve imports #

Absolute imports:
Verwijzen naar de module vanaf de basisdirectory van je project.

from mijn_pakket.module1 import functie_uit_module1
Python

  • Voordeel: Duidelijk waar de module vandaan komt.
  • Nadeel: Meer afhankelijk van de volledige projectstructuur.

Relatieve imports:
Verwijzen naar de module ten opzichte van de huidige module.

from .module1 import functie_uit_module1
Python
  • Voordeel: Makkelijker te onderhouden binnen een pakket.
  • Nadeel: Werkt niet goed buiten pakketten.

Belangrijke beperkingen van relatieve imports #

  1. Werkt alleen in pakketten:
    Relatieve imports werken alleen als de module deel uitmaakt van een pakket. Je kunt geen relatieve imports gebruiken in standalone scripts.
  2. Niet geschikt voor grote veranderingen in de structuur:
    Als de structuur van je pakket verandert, kunnen relatieve imports breken als modules naar andere pakketten worden verplaatst.
  3. Kan verwarrend zijn in diepe hiërarchieën:
    In pakketten met meerdere submappen kan het lastig zijn om de juiste relatieve import te bepalen.

Een uitgebreid voorbeeld: Subpakketten en relatieve imports #

Laten we een complexere structuur maken met subpakketten:

mijn_pakket/
├── __init__.py
├── module1.py
├── sub_pakket/
│   ├── __init__.py
│   ├── module3.py
│   └── module4.py
Python

Modules in het subpakket gebruiken #

Stel dat module4.py een functie uit module1.py wil gebruiken.

Code in module4.py:

from ..module1 import functie_uit_module1

def functie_uit_module4():
    print("Hallo vanuit module4!")
    functie_uit_module1()
Python

  • .. betekent “ga een map omhoog” ten opzichte van de huidige module.
  • Hiermee kun je verwijzen naar modules buiten het huidige subpakket.

Tips voor het gebruik van relatieve imports #

  1. Begin klein:
    Gebruik relatieve imports binnen dezelfde map (.) voordat je subpakketten aanpakt.
  2. Maak een duidelijke structuur:
    Zorg ervoor dat je pakketten en subpakketten logisch zijn ingedeeld.
  3. Combineer met __init__.py:
    Gebruik __init__.py om modules in een pakket samen te voegen en een centrale toegangspoort te creëren.

Samenvatting #

Relatieve imports zijn een krachtig hulpmiddel om modules binnen een pakket efficiënt te gebruiken. Ze maken je code leesbaarder, onderhoudsvriendelijker en flexibeler bij het organiseren van grotere projecten. Hoewel ze beperkingen hebben, zijn ze onmisbaar in complexe pakketten en subpakketten.

Probeer zelf een klein pakket te maken met modules die elkaar importeren, en ontdek hoe handig relatieve imports zijn. Binnenkort zul je ze gebruiken als een echte pro! 🎉🚀

Updated on december 23, 2024
4.6 Importeren en Namespaces Begrijpen4.8 Organiseren van Grotere Projecten
Inhoudsopgave
  • Wat is relatieve import?
    • Relatieve import in actie
    • Voorbeeldproject: Een pakket met modules
  • Hoe modules binnen hetzelfde pakket importeren
  • Wanneer gebruik je relatieve imports?
    • 1. Grote projecten met pakketten
    • 2. Voordelen van relatieve imports
    • 3. Absolute imports versus relatieve imports
  • Belangrijke beperkingen van relatieve imports
  • Een uitgebreid voorbeeld: Subpakketten en relatieve imports
    • Modules in het subpakket gebruiken
  • Tips voor het gebruik van relatieve imports
  • Samenvatting
Programmeren in Python

Leer python op je eigen tempo met mooie interactieve hedendaagse voorbeelden.

© Copyright 2025 Programmeren in Python.
Sign inSign up

Sign in

Don’t have an account? Sign up
Lost your password?

Sign up

Already have an account? Sign in