Förstaklassfunktioner
Skicka och returnera funktioner
Förstaklassfunktioner är en gratis lektion i Python Academy på CoddyKit. Detta är lektion 1 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Python Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Python Academy innehåller totalt 4 lektioner.
Funktioner är objekt
I Python är funktioner förstaklassobjekt. De kan tilldelas variabler, lagras i datastrukturer, skickas som argument och returneras från andra funktioner – precis som tal eller strängar.
def greet():
return 'hi'
print(type(greet))
print(greet())Tilldela funktioner till variabler
Ett funktionsnamn är bara en referens. Tilldela det till ett annat namn och anropa funktionen via det namnet – utan parenteser när ni refererar till själva funktionen.
def shout(text):
return text.upper()
yell = shout
print(yell('hello'))Funktioner i datastrukturer
Ni kan lagra funktioner i listor eller dict-objekt och sedan slå upp och anropa dem dynamiskt.
def add(a, b):
return a + b
def sub(a, b):
return a - b
ops = {'+': add, '-': sub}
print(ops['+'](10, 4))
print(ops['-'](10, 4))Skicka funktioner som argument
En funktion som tar en annan funktion som parameter kallas en högre ordningens funktion. Den skickade funktionen är argumentet.
def apply(func, value):
return func(value)
print(apply(str.upper, 'cat'))
print(apply(len, 'cat'))map använder förstaklassfunktioner
Inbyggda funktioner som map bygger på att funktioner skickas runt. Här tillämpas en funktion på varje objekt.
def square(n):
return n * n
result = list(map(square, [1, 2, 3, 4]))
print(result)filter tar ett predikat
filter behåller de objekt för vilka den skickade funktionen returnerar True. Funktionen avgör vad som blir kvar.
def is_even(n):
return n % 2 == 0
print(list(filter(is_even, range(10))))Returnera en funktion
En funktion kan returnera en annan funktion. Den returnerade funktionen kan sedan anropas separat.
def get_greeter():
def greeter(name):
return 'Hello ' + name
return greeter
f = get_greeter()
print(f('Ada'))Funktioner som sorteringsnycklar
sorted accepterar en key-funktion som mappar varje objekt till ett värde som används för sorteringen.
words = ['banana', 'fig', 'cherry']
by_length = sorted(words, key=len)
print(by_length)Lambda-uttryck som snabba funktioner
En lambda är en liten anonym funktion. Den passar perfekt för engångsanvändning som argument.
nums = [5, 1, 4, 2]
print(sorted(nums, key=lambda x: -x))Funktioner har attribut
Eftersom funktioner är objekt har de attribut som __name__ och en docstring i __doc__.
def hello():
'Says hello.'
return 'hi'
print(hello.__name__)
print(hello.__doc__)Bygga en dispatch-tabell
Genom att kombinera dessa idéer kan ni bygga en ren dispatch-tabell som väljer en funktion utifrån namn – utan långa kedjor med if/elif.
def start():
return 'starting'
def stop():
return 'stopping'
actions = {'start': start, 'stop': stop}
command = 'start'
print(actions[command]())Snabbtest
Vad innebär det att funktioner är ’förstaklassobjekt’ i Python?
Sammanfattning: Förstaklassfunktioner
Ni har lärt er att funktioner i Python:
- är objekt som ni kan tilldela, lagra, skicka och returnera.
- kan tas emot eller returneras av högre ordningens funktioner (
map,filterochkeyisorted). - kan skapas snabbt som anonyma funktioner med
lambda. - möjliggör rena dispatch-tabeller i stället för långa villkorssatser.
ops = {'double': lambda x: x * 2}
print(ops['double'](21))Lär dig Python med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 76
- Lektioner
- 320
Vanliga frågor
Är lektionen ”Förstaklassfunktioner” gratis?
Ja – hela texten till ”Förstaklassfunktioner” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Python Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Python Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Förstaklassfunktioner”?
Skicka och returnera funktioner Ni övar på Python Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Python Academy?
Du behöver inga förkunskaper. Utbildningen i Python Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.
Hur lång tid tar lektionen ”Förstaklassfunktioner”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Python Academy-lektionen?
Ja. Varje Python Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Förstaklassfunktioner
- Slutningar och fria variabler
- nonlocal och föränderliga tillstånd
- Partiella funktioner