Python Academy · Lektion

Funktioner som förstaklassobjekt

Förstå closures och hur funktioner skickas som argument.

Lektion 1 av 414 steg

Funktioner som förstaklassobjekt ä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.

Introduktion

I Python är funktioner förstaklassobjekt: de kan skickas som argument, returneras och lagras i datastrukturer.

Funktioner är objekt

def double(x): return x*2 skapar ett funktionsobjekt. double är bara ett namn. Ni kan tilldela det: fn = double; fn(5) fungerar.
def double(x): return x * 2
fn = double
print(fn(5))
print(type(fn))

Skicka funktioner som argument

def apply(func, val): return func(val) – func är ett anropbart argument. Detta är programmering med högre ordning.
def apply(func, val): return func(val)
print(apply(abs, -7))
print(apply(str, 42))

Lagra funktioner i behållare

ops = [add, sub, mul] lagrar funktionsobjekt i en lista. Iterera och anropa dem: for op in ops: op(a, b).
ops = [str.upper, str.lower, str.strip]
for op in ops:
    print(op('  Hello  '))

Returnera funktioner

En funktion kan returnera en annan funktion. 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))

Closures

En closure fångar variabler från det omslutande scopet. Den inre funktionen ”sluter sig över” 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 funktion

lambda x: x*2 är en anonym funktion med ett uttryck. Den är användbar för korta callback-funktioner, men ge den ett namn om logiken inte är trivial.
nums = [3, 1, 4, 1, 5]
print(sorted(nums, key=lambda x: -x))

map() och filter()

map(func, iterable) tillämpar func på varje element. filter(pred, iterable) behåller de element där pred är 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) viker ihop en sekvens: reduce(lambda a,b: a+b, [1,2,3,4]) ger 10.
from functools import reduce
print(reduce(lambda a,b: a*b, [1,2,3,4,5]))

Kontroll av anropbarhet

callable(obj) returnerar True om obj kan anropas. Funktioner, klasser och objekt med __call__ är anropbara.
print(callable(print))
print(callable(42))
class C:
    def __call__(self): pass
print(callable(C()))

Funktionsintrospektion

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

Snabb kontroll

Vad är en closure i Python?

Sammanfattning

Funktioner är förstaklassobjekt. Skicka dem som argument, returnera dem från funktioner och lagra dem i behållare. Closures fångar det omslutande scopet. Använd lambda för enkla enradingar.

Fortsätt

Utmärkt framsteg! Fortsätt för att behärska nästa koncept.
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 ”Funktioner som förstaklassobjekt” gratis?

Ja – hela texten till ”Funktioner som förstaklassobjekt” 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 ”Funktioner som förstaklassobjekt”?

Förstå closures och hur funktioner skickas som argument. 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 ”Funktioner som förstaklassobjekt”?

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. Funktioner som förstaklassobjekt
  2. Skriva egna decorators
  3. Decorators: @property
  4. @classmethod och @staticmethod
← Tillbaka till Python Academy