Python Academy · leksjon

Funksjoner som førsteklasses objekter

Forstå closures og hvordan funksjoner sendes som argumenter.

Leksjon 1 av 414 trinn

Funksjoner som førsteklasses objekter er en gratis leksjon i Python Academy på CoddyKit. Dette er leksjon 1 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Python Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Python Academy inneholder totalt 4 leksjoner.

Innledning

I Python er funksjoner førsteklasses objekter: De kan sendes som argumenter, returneres og lagres i datastrukturer.

Funksjoner er objekter

def double(x): return x*2 oppretter et funksjonsobjekt. double er bare et navn. De kan tilordne det: fn = double; fn(5) fungerer.
def double(x): return x * 2
fn = double
print(fn(5))
print(type(fn))

Sende funksjoner som argumenter

def apply(func, val): return func(val) — func er et kallbart argument. Dette er programmering på høyere nivå.
def apply(func, val): return func(val)
print(apply(abs, -7))
print(apply(str, 42))

Lagre funksjoner i beholdere

ops = [add, sub, mul] lagrer funksjonsobjekter i en liste. Iterer og kall dem: for op in ops: op(a, b).
ops = [str.upper, str.lower, str.strip]
for op in ops:
    print(op('  Hello  '))

Returnere funksjoner

En funksjon kan returnere en annen funksjon. def make_adder(n): def adder(x): return x+n; return adder
def make_adder(n):
    def adder(x): return x + n
    return adder
add10 = make_adder(10)
print(add10(5), add10(20))

Lukkinger

En lukking fanger opp variabler fra det omsluttende virkeområdet. Den indre funksjonen «lukker over» n i make_adder.
def counter(start=0):
    count = [start]
    def inc():
        count[0] += 1
        return count[0]
    return inc
c = counter()
print(c(), c(), c())

Lambda som anonym funksjon

lambda x: x*2 er en anonym funksjon med ett uttrykk. Den er nyttig som kort tilbakekallingsfunksjon, men gi den et navn hvis logikken ikke er enkel.
nums = [3, 1, 4, 1, 5]
print(sorted(nums, key=lambda x: -x))

map() og filter()

map(func, iterable) bruker func på hvert element. filter(pred, iterable) beholder elementene der pred er True.
nums = [1, 2, 3, 4, 5]
print(list(map(lambda x: x**2, nums)))
print(list(filter(lambda x: x%2==0, nums)))

functools.reduce()

reduce(func, seq) folder sammen en sekvens: reduce(lambda a,b: a+b, [1,2,3,4]) gir 10.
from functools import reduce
print(reduce(lambda a,b: a*b, [1,2,3,4,5]))

Sjekk av kallbarhet

callable(obj) returnerer True hvis obj kan kalles. Funksjoner, klasser og objekter med __call__ er kallbare.
print(callable(print))
print(callable(42))
class C:
    def __call__(self): pass
print(callable(C()))

Funksjonsintrospeksjon

func.__name__, func.__doc__, func.__annotations__, inspect.signature(func) gir metadata om funksjonen.
import inspect
def greet(name: str) -> str:
    '''Returns a greeting.'''
    return f'Hi {name}'
print(greet.__name__, greet.__annotations__)
print(inspect.signature(greet))

Hurtigsjekk

Hva er en lukking i Python?

Oppsummering

Funksjoner er førsteklasses objekter. Send dem som argumenter, returner dem fra funksjoner og lagre dem i beholdere. Lukkinger fanger opp det omsluttende virkeområdet. Bruk lambda for enkle uttrykk på én linje.

Fortsett

Utmerket fremgang! Fortsett for å mestre neste konsept.
Gratis å komme i gang

Lær deg Python med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
76
Leksjoner
320

Ofte stilte spørsmål

Er leksjonen «Funksjoner som førsteklasses objekter» gratis?

Ja – hele teksten i «Funksjoner som førsteklasses objekter» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Python Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Python Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Funksjoner som førsteklasses objekter»?

Forstå closures og hvordan funksjoner sendes som argumenter. Du øver på Python Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Python Academy?

Ingen tidligere erfaring er nødvendig. Python Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 1 av 4.

Hvor lang tid tar leksjonen «Funksjoner som førsteklasses objekter»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Python Academy-leksjonen?

Ja. Alle Python Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Funksjoner som førsteklasses objekter
  2. Skrive egendefinerte decorators
  3. @property-decoratoren
  4. @classmethod og @staticmethod
← Tilbake til Python Academy