0Pricing
Python Academy · Lekcja

Funkcje jako obiekty pierwszej klasy

Proszę zrozumieć domknięcia oraz przekazywanie funkcji jako argumentów.

Funkcje jako obiekty pierwszej klasy to bezpłatna lekcja Python Academy na CoddyKit. To lekcja 1 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.

Wprowadzenie

W Pythonie funkcje są obiektami pierwszej klasy: można przekazywać je jako argumenty, zwracać i przechowywać w strukturach danych.

Funkcje są obiektami

def double(x): return x*2 tworzy obiekt funkcji. double jest tylko nazwą. Można ją przypisać: fn = double; fn(5) działa.
def double(x): return x * 2
fn = double
print(fn(5))
print(type(fn))

Przekazywanie funkcji jako argumentów

def apply(func, val): return func(val) — func to argument wywoływalny. Jest to programowanie wyższego rzędu.
def apply(func, val): return func(val)
print(apply(abs, -7))
print(apply(str, 42))

Przechowywanie funkcji w kontenerach

ops = [add, sub, mul] przechowuje obiekty funkcji na liście. Można je iterować i wywoływać: for op in ops: op(a, b).
ops = [str.upper, str.lower, str.strip]
for op in ops:
    print(op('  Hello  '))

Zwracanie funkcji

Funkcja może zwracać inną funkcję. 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))

Domknięcia

Domknięcie przechwytuje zmienne z otaczającego zakresu. Funkcja wewnętrzna „zamyka się nad” n w 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 jako funkcja anonimowa

lambda x: x*2 to anonimowa funkcja składająca się z jednego wyrażenia. Jest przydatna jako krótki callback, ale jeśli logika nie jest trywialna, należy nadać funkcji nazwę.
nums = [3, 1, 4, 1, 5]
print(sorted(nums, key=lambda x: -x))

map() i filter()

map(func, iterable) stosuje func do każdego elementu. filter(pred, iterable) zachowuje elementy, dla których pred ma wartość 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) składa elementy sekwencji: reduce(lambda a,b: a+b, [1,2,3,4]) daje wynik 10.
from functools import reduce
print(reduce(lambda a,b: a*b, [1,2,3,4,5]))

Sprawdzanie wywoływalności

callable(obj) zwraca True, jeśli można wywołać obj. Wywoływalne są funkcje, klasy oraz obiekty z __call__.
print(callable(print))
print(callable(42))
class C:
    def __call__(self): pass
print(callable(C()))

Introspekcja funkcji

func.__name__, func.__doc__, func.__annotations__, inspect.signature(func) udostępniają metadane funkcji.
import inspect
def greet(name: str) -> str:
    '''Returns a greeting.'''
    return f'Hi {name}'
print(greet.__name__, greet.__annotations__)
print(inspect.signature(greet))

Szybkie sprawdzenie

Czym jest domknięcie w Pythonie?

Podsumowanie

Funkcje są obiektami pierwszej klasy. Można przekazywać je jako argumenty, zwracać z funkcji i przechowywać w kontenerach. Domknięcia przechwytują otaczający zakres. lambda służy do prostych funkcji jednowierszowych.

Proszę kontynuować

Doskonale Państwu idzie! Proszę kontynuować naukę, aby opanować kolejne zagadnienie.

Często zadawane pytania

Czy lekcja „Funkcje jako obiekty pierwszej klasy” jest bezpłatna?

Tak — pełny tekst „Funkcje jako obiekty pierwszej klasy” 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 jako obiekty pierwszej klasy”?

Proszę zrozumieć domknięcia oraz przekazywanie funkcji jako argumentów. Ć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 1 z 4.

Ile czasu zajmuje lekcja „Funkcje jako obiekty pierwszej klasy”?

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 jako obiekty pierwszej klasy
  2. Pisanie własnych dekoratorów
  3. Dekorator @property
  4. @classmethod i @staticmethod
← Powrót do Python Academy