Partielle funktioner
Brug functools.partial
Partielle funktioner er en gratis Python Academy-lektion på CoddyKit. Dette er lektion 4 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.
Hvad er en partial?
functools.partial opretter en ny funktion, hvor nogle af argumenterne til en eksisterende funktion allerede er udfyldt. Det svarer til at forudindlæse argumenter, så du kan kalde resultatet med færre argumenter.
Importér den med from functools import partial.
from functools import partial
def power(base, exp):
return base ** exp
square = partial(power, exp=2)
print(square(5))Fastlåsning af positionelle argumenter
Positionelle argumenter, der gives til partial, udfylder funktionens parametre fra venstre mod højre. De resterende argumenter gives, når du kalder partial-funktionen.
from functools import partial
def multiply(a, b):
return a * b
double = partial(multiply, 2)
print(double(10))
print(double(50))Fastlåsning af nøgleordsargumenter
Nøgleordsargumenter, der gives til partial, bliver standardværdier, som du stadig kan tilsidesætte ved kaldet.
from functools import partial
def greet(name, greeting='Hello'):
return greeting + ', ' + name
hola = partial(greet, greeting='Hola')
print(hola('Ada'))
print(hola('Bob', greeting='Hey'))Partials med indbyggede funktioner
Du kan også oprette partial-funktioner ud fra indbyggede funktioner. Her opretter vi en heltalsfortolker til base 2 ud fra int.
from functools import partial
binary = partial(int, base=2)
print(binary('1010'))
print(binary('1111'))Renere tilbagekald
Partials er gode til tilbagekald, hvor du skal give en funktion uden argumenter eller med ét argument, men gerne vil forudindlæse en kontekst.
from functools import partial
def log(level, message):
return '[' + level + '] ' + message
error = partial(log, 'ERROR')
print(error('disk full'))Partials i map
En partial-funktion passer godt ind i højereordensfunktioner som map, hvor ét argument fastlåses, mens det andet varierer for hvert element.
from functools import partial
def add(a, b):
return a + b
add10 = partial(add, 10)
print(list(map(add10, [1, 2, 3])))Undersøgelse af en partial
Et partial-objekt viser den indpakkede funktion via .func, de fastlåste positionelle argumenter via .args og de fastlåste nøgleordsargumenter via .keywords.
from functools import partial
def f(a, b, c):
return (a, b, c)
p = partial(f, 1, c=3)
print(p.func.__name__)
print(p.args)
print(p.keywords)Sammenkædning af partials
Du kan oprette en partial-funktion ud fra en anden partial-funktion og lagvist tilføje flere fastlåste argumenter.
from functools import partial
def volume(l, w, h):
return l * w * h
base = partial(volume, 2)
slab = partial(base, 3)
print(slab(4))Partial kontra lambda
En lambda kan udføre den samme opgave, men partial er ofte tydeligere, når argumenter skal fastlåses, og viser den indpakkede funktion til introspektion.
from functools import partial
def power(base, exp):
return base ** exp
cube_p = partial(power, exp=3)
cube_l = lambda b: power(b, 3)
print(cube_p(2), cube_l(2))Et praktisk eksempel: afrunding
Opret en funktion, der afrunder til to decimaler, ved at oprette en partial-funktion ud fra den indbyggede round.
from functools import partial
round2 = partial(round, ndigits=2)
print(round2(3.14159))
print(round2(2.71828))partialmethod til klasser
Den beslægtede functools.partialmethod gør det samme for metoder i en klassedefinition ved at udfylde argumenter på forhånd for en metode.
from functools import partialmethod
class Light:
def set(self, state):
self.state = state
return state
on = partialmethod(set, True)
off = partialmethod(set, False)
l = Light()
print(l.on())
print(l.off())Hurtigt tjek
Hvad gør functools.partial?
Opsummering: Partial-funktioner
Du har lært, at functools.partial:
- opretter en ny funktion med nogle forudfyldte argumenter (positionelle argumenter eller nøgleordsargumenter).
- lader dig tilsidesætte forudindstillede standardværdier for nøgleordsargumenter ved kaldet.
- er ideel til tilbagekald,
mapog til at reducere gentagelser. - viser
.func,.argsog.keywordsog har en metodevariant kaldetpartialmethod.
from functools import partial
add = lambda a, b: a + b
plus1 = partial(add, 1)
print(plus1(41))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 “Partielle funktioner” gratis?
Ja — hele teksten til “Partielle funktioner” 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 “Partielle funktioner”?
Brug functools.partial 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 4 af 4.
Hvor lang tid tager lektionen “Partielle funktioner”?
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
- Funktioner som førsteklasses objekter
- Closures og frie variabler
- nonlocal og foranderlig tilstand
- Partielle funktioner