Python- functies
Een functie is een codeblok dat alleen wordt uitgevoerd als het wordt aangeroepen.
U kunt gegevens, ook wel parameters genoemd, doorgeven aan een functie.
Een functie kan als resultaat gegevens retourneren.
Een functie maken
In Python wordt een functie gedefinieerd met het sleutelwoord def :
Voorbeeld
def my_function():
print("Hello from a function")
Een functie aanroepen
Om een functie aan te roepen, gebruikt u de functienaam gevolgd door haakjes:
Voorbeeld
def my_function():
print("Hello from a function")
my_function()
Argumenten
Informatie kan als argumenten worden doorgegeven aan functies.
Argumenten worden opgegeven achter de functienaam, tussen haakjes. Je kunt zoveel argumenten toevoegen als je wilt, scheid ze gewoon met een komma.
Het volgende voorbeeld heeft een functie met één argument (fname). Wanneer de functie wordt aangeroepen, geven we een voornaam door, die binnen de functie wordt gebruikt om de volledige naam af te drukken:
Voorbeeld
def my_function(fname):
print(fname + " Refsnes")
my_function("Emil")
my_function("Tobias")
my_function("Linus")
Argumenten worden vaak afgekort tot argumenten in Python-documentatie.
Parameters of argumenten?
De termen parameter en argument kunnen voor hetzelfde worden gebruikt: informatie die aan een functie wordt doorgegeven.
Vanuit het perspectief van een functie:
Een parameter is de variabele die tussen haakjes in de functiedefinitie wordt vermeld.
Een argument is de waarde die naar de functie wordt verzonden wanneer deze wordt aangeroepen.
Aantal argumenten
Standaard moet een functie worden aangeroepen met het juiste aantal argumenten. Dit betekent dat als uw functie 2 argumenten verwacht, u de functie met 2 argumenten moet aanroepen, niet meer en niet minder.
Voorbeeld
Deze functie verwacht 2 argumenten en krijgt 2 argumenten:
def my_function(fname, lname):
print(fname + " " + lname)
my_function("Emil", "Refsnes")
Voorbeeld
Deze functie verwacht 2 argumenten, maar krijgt slechts 1:
def my_function(fname, lname):
print(fname + " " + lname)
my_function("Emil")
Willekeurige argumenten, *args
Als u niet weet hoeveel argumenten er aan uw functie worden doorgegeven, voegt u een *
vóór de parameternaam toe in de functiedefinitie.
Op deze manier ontvangt de functie een tupel argumenten en heeft ze overeenkomstige toegang tot de items:
Voorbeeld
Als het aantal argumenten niet bekend is, voeg dan een *
vóór de parameternaam toe:
def my_function(*kids):
print("The youngest child
is " + kids[2])
my_function("Emil", "Tobias", "Linus")
Willekeurige argumenten worden vaak afgekort tot *args in Python-documentatie.
Zoekwoordargumenten
U kunt ook argumenten verzenden met de syntaxis key = value .
Op deze manier doet de volgorde van de argumenten er niet toe.
Voorbeeld
def my_function(child3, child2, child1):
print("The youngest child
is " + child3)
my_function(child1 = "Emil", child2 = "Tobias", child3 = "Linus")
De zinsnede Keyword Argumenten wordt vaak afgekort tot kwargs in Python-documentatie.
Arbitraire trefwoordargumenten, **kwargs
Als u niet weet hoeveel sleutelwoordargumenten aan uw functie worden doorgegeven, voegt u twee asterisken toe: **
vóór de parameternaam in de functiedefinitie.
Op deze manier ontvangt de functie een woordenboek met argumenten en heeft ze overeenkomstige toegang tot de items:
Voorbeeld
Als het aantal trefwoordargumenten onbekend is, voeg dan een dubbel toe
**
voor de parameternaam:
def my_function(**kid):
print("His last name is " + kid["lname"])
my_function(fname = "Tobias", lname = "Refsnes")
Willekeurige Kword-argumenten worden vaak afgekort tot **kwargs in Python-documentatie.
Standaard parameterwaarde:
In het volgende voorbeeld ziet u hoe u een standaardparameterwaarde gebruikt.
Als we de functie zonder argument aanroepen, gebruikt deze de standaardwaarde:
Voorbeeld
def my_function(country = "Norway"):
print("I am from " +
country)
my_function("Sweden")
my_function("India")
my_function()
my_function("Brazil")
Een lijst doorgeven als argument
U kunt elk gegevenstype argument naar een functie sturen (tekenreeks, getal, lijst, woordenboek enz.), en het zal binnen de functie als hetzelfde gegevenstype worden behandeld.
Als u bijvoorbeeld een lijst als argument verzendt, is het nog steeds een lijst wanneer deze de functie bereikt:
Voorbeeld
def my_function(food):
for x in food:
print(x)
fruits = ["apple", "banana", "cherry"]
my_function(fruits)
Retourwaarden
Om een functie een waarde te laten retourneren, gebruik je de return
instructie:
Voorbeeld
def my_function(x):
return 5 * x
print(my_function(3))
print(my_function(5))
print(my_function(9))
De pasverklaring
function
definities kunnen niet leeg zijn, maar als je om wat voor reden dan ook een function
definitie hebt zonder inhoud, plaats dan de pass
instructie om een fout te voorkomen.
Voorbeeld
def myfunction():
pass
Herhaling
Python accepteert ook functierecursie, wat betekent dat een gedefinieerde functie zichzelf kan aanroepen.
Recursie is een veelgebruikt wiskundig en programmeerconcept. Het betekent dat een functie zichzelf aanroept. Dit heeft als voordeel dat u door gegevens kunt bladeren om tot een resultaat te komen.
De ontwikkelaar moet heel voorzichtig zijn met recursie, aangezien het vrij gemakkelijk kan zijn om een functie te gaan schrijven die nooit eindigt, of een functie die teveel geheugen of processorkracht gebruikt. Wanneer echter correct geschreven, kan recursie een zeer efficiënte en wiskundig elegante benadering van programmeren zijn.
In dit voorbeeld is tri_recursion() een functie die we hebben gedefinieerd om zichzelf aan te roepen ("recurse"). We gebruiken de variabele k als de gegevens, die elke keer dat we terugkeren , met ( -1 ) wordt verlaagd. De recursie eindigt wanneer de voorwaarde niet groter is dan 0 (dwz wanneer deze 0 is).
Voor een nieuwe ontwikkelaar kan het enige tijd duren om uit te zoeken hoe dit precies werkt, de beste manier om erachter te komen is door het te testen en aan te passen.
Voorbeeld
Voorbeeld van recursie
def tri_recursion(k):
if(k > 0):
result = k + tri_recursion(k - 1)
print(result)
else:
result = 0
return result
print("\n\nRecursion Example Results")
tri_recursion(6)