Python Academy · Lektion

Förstaklassfunktioner

Skicka och returnera funktioner

Lektion 1 av 413 steg

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, filter och key i sorted).
  • 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))
Gratis att börja

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

  1. Förstaklassfunktioner
  2. Slutningar och fria variabler
  3. nonlocal och föränderliga tillstånd
  4. Partiella funktioner
← Tillbaka till Python Academy