Python Academy · Lektion

Funktioner som førsteklasses objekter

Videregiv og returnér funktioner

Lektion 1 af 413 trin

Funktioner som førsteklasses objekter er en gratis Python Academy-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Python Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Python Academy-kurset indeholder 4 lektioner i alt.

Funktioner er objekter

I Python er funktioner førsteklasses objekter. De kan tildeles til variabler, gemmes i datastrukturer, gives som argumenter og returneres fra andre funktioner – ligesom tal eller strenge.

def greet():
    return 'hi'
print(type(greet))
print(greet())

Tildeling af funktioner til variabler

Et funktionsnavn er blot en reference. Tildel det et andet navn, og kald funktionen gennem det navn – uden parenteser, når du refererer til selve funktionen.

def shout(text):
    return text.upper()
yell = shout
print(yell('hello'))

Funktioner i datastrukturer

Du kan gemme funktioner i lister eller ordbøger og derefter slå dem op og kalde dem dynamisk.

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))

Funktioner som argumenter

En funktion, der tager en anden funktion som parameter, kaldes en højereordensfunktion. Den givne funktion er argumentet.

def apply(func, value):
    return func(value)
print(apply(str.upper, 'cat'))
print(apply(len, 'cat'))

map bruger førsteklasses funktioner

Indbyggede funktioner som map er baseret på, at funktioner gives videre. Her anvendes en funktion på hvert element.

def square(n):
    return n * n
result = list(map(square, [1, 2, 3, 4]))
print(result)

filter tager et prædikat

filter beholder de elementer, som den givne funktion returnerer True for. Funktionen afgør, hvad der bevares.

def is_even(n):
    return n % 2 == 0
print(list(filter(is_even, range(10))))

Returnering af en funktion

En funktion kan returnere en anden funktion. Den returnerede funktion kan derefter kaldes separat.

def get_greeter():
    def greeter(name):
        return 'Hello ' + name
    return greeter
f = get_greeter()
print(f('Ada'))

Funktioner som sorteringsnøgler

sorted accepterer en key-funktion, der omsætter hvert element til en værdi, som bruges til sortering.

words = ['banana', 'fig', 'cherry']
by_length = sorted(words, key=len)
print(by_length)

Lambdaer som hurtige funktioner

En lambda er en lille anonym funktion. Den er perfekt til engangsbrug som argument.

nums = [5, 1, 4, 2]
print(sorted(nums, key=lambda x: -x))

Funktioner har attributter

Fordi funktioner er objekter, har de attributter som __name__ og en dokumentationsstreng i __doc__.

def hello():
    'Says hello.'
    return 'hi'
print(hello.__name__)
print(hello.__doc__)

Oprettelse af en fordelingstabel

Ved at kombinere disse idéer kan du oprette en enkel fordelingstabel, der vælger en funktion efter navn – uden lange kæder af if/elif.

def start():
    return 'starting'
def stop():
    return 'stopping'
actions = {'start': start, 'stop': stop}
command = 'start'
print(actions[command]())

Hurtigt tjek

Hvad betyder det, at funktioner er førsteklasses i Python?

Opsummering: Førsteklasses funktioner

Du har lært, at funktioner i Python:

  • er objekter, som du kan tildele, gemme, give videre og returnere.
  • kan bruges i højereordensfunktioner, der tager eller returnerer andre funktioner (map, filter og key i sorted).
  • kan oprette hurtige anonyme funktioner med lambda.
  • gør det muligt at bruge rene fordelings-tabeller i stedet for lange betingelser.
ops = {'double': lambda x: x * 2}
print(ops['double'](21))
Gratis at komme i gang

Lær Python med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
76
Lektioner
320

Ofte stillede spørgsmål

Er lektionen “Funktioner som førsteklasses objekter” gratis?

Ja — hele teksten til “Funktioner som førsteklasses objekter” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Python Academy-kurset, skal du opgradere til CoddyKit PRO. Python Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Funktioner som førsteklasses objekter”?

Videregiv og returnér funktioner Du øver dig i Python Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Python Academy?

Der kræves ingen tidligere erfaring. Python Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.

Hvor lang tid tager lektionen “Funktioner som førsteklasses objekter”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Python Academy-lektion?

Ja. Alle Python Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Funktioner som førsteklasses objekter
  2. Closures og frie variabler
  3. nonlocal og foranderlig tilstand
  4. Partielle funktioner
← Tilbage til Python Academy