Oh, jongen, er staat een code op het scherm en het ziet er erg verwarrend uit.
Dit is een voorbeeld van een echt ingewikkelde, gecompliceerde functie die je nooit zou schrijven, maar die
goed is voor trainingsdoeleinden.
En we hebben het hier specifiek over, hier niet-lokaal genoemd.
Het is eigenlijk een nieuw sleutelwoord in Python drie.
En zoals je kunt zien, merkt mijn Reppel het niet eens op.
Het wordt dus niet eens blauw gemarkeerd omdat het een nieuwe functie is.
Maar ik wil er wel met je over praten en je laten weten wat het doet.
Het niet-lokale sleutelsleutelwoord wordt gebruikt om naar dit deel te verwijzen, dit bovenliggende lokale.
Het is een manier voor ons om te zeggen, hey, ik wil een variabele gebruiken die geen globale variabele is, maar buiten
het bereik van mijn functie valt.
Dus op basis van die definitie, probeer de video te pauzeren en kijk wat deze functie zou kunnen doen, ik zal
het nu meteen uitvoeren en dan de code doornemen als ik op uitvoeren klik.
Dit is wat we krijgen.
Laten we het hier dus over hebben.
We hebben een uiterlijke functie en dan noemen we de uiterlijke functie.
Dus de Python-interpreter gaat zeggen, oké, we hebben een X-variabele die lokaal is voor
de buitenste functie.
En dan hierbinnen, gaan we een innerlijke functie definiëren, een andere functie.
En hierbinnen, voordat we dat zelfs maar noemen, sprongen we in regel negen en zeiden, oké, bel innerlijke functie.
We komen terug en we zeggen, hey, regel vijf, ik wil non-local X gebruiken.
Hm.
Wat betekent dat?
Nou, ik wil deze X-variabele gebruiken omdat het niet-lokaal is.
Dat wil zeggen, ik wil geen nieuwe X-variabele maken.
Ik wil naar mijn ouders springen, mijn ouders lokaal bekijken en pakken wat je daar vindt.
Zolang het geen globale variabele is, zal elke ouder het doen.
Ik wil dat non-lokale grijpen.
Dus nu verwijst deze X naar de buitenste functie hier.
Dus als we zeggen dat X gelijk is aan niet-lokaal, wijzen we deze nieuwe string toe.
En door deze local te vervangen, zodat wanneer we interacties printen, we non-local krijgen, maar ook wanneer we
de buitenste X printen, hebben we deze outer scope aangepast met het non-local sleutelwoord.
Dus dat wordt ook niet-lokaal.
Als ik deze regel verwijder en laten we er commentaar op geven en ik klik op uitvoeren.
Je ziet het verschil nu we de inner nonlocal hebben, maar de outer local is niet gewijzigd omdat
dit een nieuwe variabele is.
Nogmaals, ik beweer dat dit uw code eigenlijk ingewikkelder maakt dan nodig is.
Er zijn dus speciale gevallen waarin u dit misschien wilt gebruiken, maar als u kunt proberen uw code voorspelbaar
te maken, waar u kunt voorkomen dat u dingen als niet-lokaal en globaal gebruikt, let wel, ze zijn er met een reden omdat
ze in sommige gevallen nuttig zijn situaties.
Dat gezegd hebbende, onthoud, maak je code voorspelbaar, maak je code schoon, en ik zie je in de
volgende video.