0Pricing
Python Academy · Lekcja

Funkcje częściowe

Używaj functools.partial

Funkcje częściowe to bezpłatna lekcja Python Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Python Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Python Academy zawiera 4 lekcji w sumie.

Czym jest partial?

functools.partial tworzy nową funkcję, w której niektóre argumenty istniejącej funkcji są już uzupełnione. To jak wstępne podanie argumentów, dzięki czemu wynikową funkcję można wywołać z mniejszą ich liczbą.

Element należy zaimportować za pomocą from functools import partial.

from functools import partial
def power(base, exp):
    return base ** exp
square = partial(power, exp=2)
print(square(5))

Ustalanie argumentów pozycyjnych

Argumenty pozycyjne przekazane do partial wypełniają parametry funkcji od lewej strony. Pozostałe argumenty są podawane podczas wywoływania funkcji partial.

from functools import partial
def multiply(a, b):
    return a * b
double = partial(multiply, 2)
print(double(10))
print(double(50))

Ustalanie argumentów nazwanych

Argumenty nazwane przekazane do partial stają się wartościami domyślnymi, które nadal można zastąpić w chwili wywołania.

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

Funkcje partial z funkcjami wbudowanymi

Funkcje wbudowane również można częściowo skonfigurować za pomocą partial. W tym przykładzie na podstawie int tworzymy parser liczb całkowitych o podstawie 2.

from functools import partial
binary = partial(int, base=2)
print(binary('1010'))
print(binary('1111'))

Przejrzystsze funkcje zwrotne

Funkcje partial świetnie sprawdzają się jako funkcje zwrotne, gdy trzeba przekazać funkcję bez argumentów lub z jednym argumentem, ale chce się wcześniej przygotować kontekst.

from functools import partial
def log(level, message):
    return '[' + level + '] ' + message
error = partial(log, 'ERROR')
print(error('disk full'))

Funkcje partial w map

Funkcja partial doskonale pasuje do funkcji wyższego rzędu, takich jak map, ustalając jeden argument, podczas gdy drugi zmienia się dla każdego elementu.

from functools import partial
def add(a, b):
    return a + b
add10 = partial(add, 10)
print(list(map(add10, [1, 2, 3])))

Sprawdzanie funkcji partial

Obiekt partial udostępnia opakowaną funkcję za pośrednictwem .func, ustalone argumenty pozycyjne za pośrednictwem .args, a ustalone argumenty nazwane za pośrednictwem .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)

Łączenie funkcji partial

Funkcję partial można utworzyć na podstawie innej funkcji partial, dodając kolejne ustalone argumenty krok po kroku.

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 a lambda

lambda może wykonać to samo zadanie, ale partial jest często przejrzystsze przy ustalaniu argumentów i udostępnia opakowaną funkcję do introspekcji.

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

Praktyczny przykład: zaokrąglanie

Utwórz funkcję zaokrąglającą do dwóch miejsc po przecinku, częściowo konfigurując wbudowaną funkcję round.

from functools import partial
round2 = partial(round, ndigits=2)
print(round2(3.14159))
print(round2(2.71828))

partialmethod dla klas

Powiązane functools.partialmethod działa podobnie w przypadku metod wewnątrz definicji klasy, wstępnie uzupełniając argumenty metody.

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

Szybki test

Co robi functools.partial?

Podsumowanie: funkcje partial

Element functools.partial:

  • tworzy nową funkcję z wcześniej uzupełnionymi argumentami pozycyjnymi lub nazwanymi;
  • pozwala zastępować ustalone wartości domyślne argumentów nazwanych w chwili wywołania;
  • idealnie nadaje się do funkcji zwrotnych, map i ograniczania powtórzeń;
  • udostępnia .func, .args i .keywords, a także ma wariant metody o nazwie partialmethod.
from functools import partial
add = lambda a, b: a + b
plus1 = partial(add, 1)
print(plus1(41))

Często zadawane pytania

Czy lekcja „Funkcje częściowe” jest bezpłatna?

Tak — pełny tekst „Funkcje częściowe” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Python Academy, przejdź na CoddyKit PRO. Kurs Python Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Funkcje częściowe”?

Używaj functools.partial Ćwiczysz Python Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Python Academy?

Nie wymagamy żadnego doświadczenia. Python Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.

Ile czasu zajmuje lekcja „Funkcje częściowe”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Python Academy?

Tak. Każda lekcja Python Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Funkcje pierwszej klasy
  2. Domknięcia i zmienne wolne
  3. nonlocal i stan zmienny
  4. Funkcje częściowe
← Powrót do Python Academy