Python Academy · Oppitunti

Osittaiset funktiot

Käytä functools.partial-funktiota

Oppitunti 4/413 vaihetta

Osittaiset funktiot on ilmainen Python Academy-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Python Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Python Academy-kurssilla on yhteensä 4 oppituntia.

Mikä on partial

functools.partial luo uuden funktion, jossa osa olemassa olevan funktion argumenteista on jo täytetty. Se vastaa argumenttien esitäyttöä, joten tulosta voi kutsua harvemmilla argumenteilla.

Tuokaa se käyttöön komennolla from functools import partial.

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

Sijaintiin perustuvien argumenttien esitäyttö

partial-funktiolle välitetyt sijaintiin perustuvat argumentit täyttävät funktion parametrit vasemmalta alkaen. Loput argumentit annetaan partial-funktiota kutsuttaessa.

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

Avainsana-argumenttien esitäyttö

partial-funktiolle annetut avainsana-argumentit muuttuvat oletusarvoiksi, jotka voi silti ohittaa kutsuhetkellä.

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

Partialisointi sisäänrakennetuilla funktioilla

Voitte luoda partial-funktioita myös sisäänrakennetuista funktioista. Tässä int-funktiosta tehdään kantaluvun 2 kokonaislukujäsennin.

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

Selkeämmät takaisinkutsut

Partial-funktiot sopivat erinomaisesti takaisinkutsuihin, joissa on välitettävä funktio ilman argumentteja tai yhden argumentin funktio, mutta konteksti halutaan esitäyttää.

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

Partial-funktiot mapissa

Partial-funktio sopii luontevasti korkeamman asteen funktioihin, kuten map-funktioon: yksi argumentti voidaan kiinnittää, kun taas toinen vaihtelee alkioittain.

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

Partial-funktion tarkastelu

Partial-olio tarjoaa käärityn funktion kohdassa .func, kiinteät sijaintiin perustuvat argumentit kohdassa .args ja kiinteät avainsana-argumentit kohdassa .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)

Partial-funktioiden ketjuttaminen

Voitte muodostaa partial-funktion toisesta partial-funktiosta ja lisätä kiinteitä argumentteja vaiheittain.

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-funktio vai lambda

lambda voi hoitaa saman tehtävän, mutta partial on usein selkeämpi argumenttien kiinnittämiseen ja tarjoaa käärityn funktion introspektiota varten.

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

Käytännön esimerkki: pyöristäminen

Tehkää kahden desimaalin pyöristäjä luomalla partial-funktio sisäänrakennetusta round-funktiosta.

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

partialmethod luokille

Siihen liittyvä functools.partialmethod tekee saman luokan määrittelyn sisällä oleville metodeille ja esitäyttää metodin argumentteja.

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

Pikatarkistus

Mitä functools.partial tekee?

Kertaus: partial-funktiot

Opitte, että functools.partial:

  • Luo uuden funktion, jonka osa argumenteista on esitäytetty sijaintiin tai avainsanoihin perustuvasti.
  • Antaa ohittaa määritetyt avainsana-argumenttien oletusarvot kutsuhetkellä.
  • Sopii erinomaisesti takaisinkutsuihin, map-funktioon ja toiston vähentämiseen.
  • Tarjoaa attribuutit .func, .args ja .keywords, ja sillä on metodeille tarkoitettu muunnelma partialmethod.
from functools import partial
add = lambda a, b: a + b
plus1 = partial(add, 1)
print(plus1(41))
Aloita maksutta

Opi Python tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
76
Oppitunnit
320

Usein kysytyt kysymykset

Onko oppitunti ”Osittaiset funktiot” ilmainen?

Kyllä – oppitunnin ”Osittaiset funktiot” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Python Academy-kurssin, päivitä CoddyKit PROhon. Python Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Osittaiset funktiot”?

Käytä functools.partial-funktiota Harjoittelet Python Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Python Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Python Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.

Kuinka kauan ”Osittaiset funktiot”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Python Academy-oppitunnilla?

Kyllä. Jokainen Python Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Ensiluokkaiset funktiot
  2. Sulkeumat ja vapaat muuttujat
  3. nonlocal ja muuttuva tila
  4. Osittaiset funktiot
← Takaisin: Python Academy