Ensiluokkaiset funktiot
Välitä ja palauta funktioita
Ensiluokkaiset funktiot on ilmainen Python Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/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.
Funktiot ovat olioita
Pythonissa funktiot ovat ensiluokkaisia olioita. Niitä voi sijoittaa muuttujiin, tallentaa tietorakenteisiin, välittää argumentteina ja palauttaa muista funktioista — aivan kuten lukuja tai merkkijonoja.
def greet():
return 'hi'
print(type(greet))
print(greet())Funktioiden sijoittaminen muuttujiin
Funktion nimi on vain viittaus. Sijoittakaa se toiselle nimelle ja kutsukaa funktiota tämän nimen kautta — funktion itsensä käsittelyssä ei käytetä sulkeita.
def shout(text):
return text.upper()
yell = shout
print(yell('hello'))Funktiot tietorakenteissa
Voitte tallentaa funktioita listoihin tai sanakirjoihin ja hakea sekä kutsua niitä dynaamisesti.
def add(a, b):
return a + b
def sub(a, b):
return a - b
ops = {'+': add, '-': sub}
print(ops['+'](10, 4))
print(ops['-'](10, 4))Funktioiden välittäminen argumentteina
Funktiota, joka ottaa toisen funktion parametrikseen, kutsutaan korkeamman asteen funktioksi. Välitetty funktio on argumentti.
def apply(func, value):
return func(value)
print(apply(str.upper, 'cat'))
print(apply(len, 'cat'))map käyttää ensiluokkaisia funktioita
Sisäänrakennetut funktiot, kuten map, perustuvat funktioiden välittämiseen. Tässä funktiota sovelletaan jokaiseen alkioon.
def square(n):
return n * n
result = list(map(square, [1, 2, 3, 4]))
print(result)filter ottaa predikaatin
filter säilyttää alkiot, joille välitetty funktio palauttaa arvon True. Funktio päättää, mitkä alkiot säilyvät.
def is_even(n):
return n % 2 == 0
print(list(filter(is_even, range(10))))Funktion palauttaminen
Funktio voi palauttaa toisen funktion. Palautettua funktiota voi sitten kutsua erikseen.
def get_greeter():
def greeter(name):
return 'Hello ' + name
return greeter
f = get_greeter()
print(f('Ada'))Funktiot järjestysavaimina
sorted hyväksyy key-funktion, joka muuntaa jokaisen alkion järjestämisessä käytettäväksi arvoksi.
words = ['banana', 'fig', 'cherry']
by_length = sorted(words, key=len)
print(by_length)Lambdat nopeina funktioina
lambda on pieni nimetön funktio. Se sopii erinomaisesti kertaluonteiseen käyttöön argumenttina.
nums = [5, 1, 4, 2]
print(sorted(nums, key=lambda x: -x))Funktioilla on attribuutteja
Koska funktiot ovat olioita, niillä on attribuutteja, kuten __name__, sekä docstring __doc__-attribuutissa.
def hello():
'Says hello.'
return 'hi'
print(hello.__name__)
print(hello.__doc__)Dispatch-taulukon rakentaminen
Yhdistämällä nämä ideat voitte rakentaa selkeän dispatch-taulukon, joka valitsee funktion nimen perusteella — pitkiä if/elif-ketjuja ei tarvita.
def start():
return 'starting'
def stop():
return 'stopping'
actions = {'start': start, 'stop': stop}
command = 'start'
print(actions[command]())Pikatarkistus
Mitä tarkoittaa, että funktiot ovat Pythonissa ”ensiluokkaisia”?
Kertaus: ensiluokkaiset funktiot
Opitte, että Pythonissa:
- Funktiot ovat olioita, joita voi sijoittaa muuttujiin, tallentaa, välittää ja palauttaa.
- Korkeamman asteen funktiot ottavat vastaan muita funktioita tai palauttavat niitä (
map,filterjasorted-funktion key). lambdaluo nopeita nimettömiä funktioita.- Tämä mahdollistaa selkeät dispatch-taulukot pitkien ehtolausekkeiden sijaan.
ops = {'double': lambda x: x * 2}
print(ops['double'](21))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 ”Ensiluokkaiset funktiot” ilmainen?
Kyllä – oppitunnin ”Ensiluokkaiset 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 ”Ensiluokkaiset funktiot”?
Välitä ja palauta funktioita 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 1/4.
Kuinka kauan ”Ensiluokkaiset 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
- Ensiluokkaiset funktiot
- Sulkeumat ja vapaat muuttujat
- nonlocal ja muuttuva tila
- Osittaiset funktiot