Het is tijd om over decorateurs te praten.
Een andere sleutelterm in Python, en we hebben al eerder decorateurs gezien.
Weet je nog toen we klassen aan het bouwen waren, ik je leerde dat er een klassenmethode en een statische methode was
en ik zei, hé, maak je hier geen zorgen over.
We zullen hier later over praten.
Nou, dit is nu de latere decorateur's look als deze.
Ze hadden het apenstaartje en daarna een soort naam.
Maar om ons volledig te laten begrijpen wat decorateurs zijn, moeten we het hebben over functies in Python en waarom ze
zo krachtig zijn.
Dit is het leuke van Python in Python-functies zijn wat we eersteklas burgers noemen.
Dat wil zeggen, ze kunnen als variabelen worden doorgegeven.
Ze kunnen een argument in een functie zijn.
Ze gedragen zich net als, nou ja, variabelen.
Laat me je laten zien, als ik een halo-functie maak, die eerlijk gezegd volkomen nutteloos is omdat het
alleen maar hallo zegt.
Als ik dit doe.
Onthoud dat ik zei dat functies eigenlijk gewoon variabelen zijn in Python.
Nogmaals, iets dat niet altijd het geval is met alle programmeertalen.
Dus als ik zou willen, kan ik zeggen dat Grete gelijk staat aan hallo.
Zodat als ik Grete afdruk.
En ik voer dit uit.
Ik krijg hallo, wat als ik hallo zo passeer, als ik dit doe?
Nou, ik krijg de functielocatie in het geheugen, dus ik zou het raster op deze manier moeten gebruiken en het goed moeten uitvoeren.
We moeten de hallo-functie aanroepen.
Oké, wat als we dit doen?
Wat als ik zeg verwijderen?
Hallo, een toetsenbord en python die die functie verwijdert.
Wat denk je dat er gaat gebeuren?
Eens kijken of ik dit uitvoer.
Hmmm, had je dat verwacht?
Had je verwacht dat hebzucht nog zou werken?
Het interessante aan Python is dat ik hallo creëer en dit wordt nu in het geheugen gemaakt, als we
bij regel vier komen, zeg ik, hey, greet zal naar hallo wijzen.
Dus hallo kan hier nog steeds worden gebeld.
Ik kan nog steeds hallo zeggen, want hallo is de naam van de functie die naar die locatie in het geheugen verwijst.
Maar als ik hallo verwijder, zegt het alleen maar: hey, ik ga deze functie verwijderen, deze naamverwijzing naar deze functie
die in het geheugen zit.
Omdat begroeten echter nog een hele andere variabele naar deze functie verwijst.
Ik ga het hallo-woord verwijderen, dus als ik zo hallo ga.
Ik krijg een luchtnaam hallo is echter niet gedefinieerd.
Het raster wijst nog steeds in het geheugen naar deze locatie, dus Python is slim genoeg om te zeggen, hey, je zei me
hallo te verwijderen, ik zal de naam hallo verwijderen, maar ik ga de functie niet verwijderen
omdat hebzucht nog steeds bestaat erop wijzen.
Dus functies in Python gedragen zich net zoals variabelen hun eersteklas burgers doen.
We kunnen ook functies doorgeven.
Rond de binnenkant van argumenten, goed, als ik hallo zeg en dan krijgt deze hallo een andere functie die aanroept,
laten we zeggen.
Functie zo.
Ik kan een rasterfunctie maken, laten we zeggen raster definiëren.
En deze functie gaat gewoon afdrukken.
Nog steeds hier.
Nu, hier binnen, als ik hallo bel.
Met.
Greet.
Of om het duidelijk te maken, laten we gewoon een gelijk aan hallo begroeten, en als ik een a afdruk, wat gebeurt er dan?
Dat werkt nog steeds, want wat er gebeurt, is dat ik zeg, hey, noem de functie hallo, OK, ik
roep de functie hallo met het argument.
Geweldig.
Dus we gaan hierheen en we zeggen, hey, voer de functie uit en welke functie we deze functie willen noemen.
Juist, want we hebben deze beugels.
Dus we springen naar welke functie dat is, wat in ons geval hebzucht is.
Dus we gaan hierheen en zeggen, hé, print dit gewoon, we hoeven het hier niet op te roepen omdat de Halo-functie
het voor ons aanroept.
Dus waarom heb ik je dat allemaal geleerd?
Wat heeft dat te maken met decorateurs van decorateurs, is alleen mogelijk vanwege deze functies, dit
vermogen van functies om zich als variabelen te gedragen, zich te gedragen als eersteklas burgers en python.
En wanneer we beginnen te leren over decorateurs onder de motorkap, gebruiken ze deze kracht van functies.
Nu en dan aankomende video's, we gaan het hebben over hoe we onze eigen video's kunnen maken, wat ze
betekenen en we gaan dieper in op dit idee van een decorateur.
Maar hier is de korte vorm van wat decorateurs doen. Decorateurs versterken onze functie als we onze, laten we
zeggen hallo-functie hier hadden.
Door een soort decorateur als deze toe te voegen, kunnen we onze functie een boost geven en er extra functionaliteit aan
toevoegen.
Het laat de Python-interpreter weten dat ik wil dat deze hallo-functie wat extra functies heeft, maar laten we dit onderwerp een
beetje meer onderzoeken in de volgende video.