Positionaaliset vs. avainsana-argumentit
Aiheeseen liittyvä artikkeli:
- Funktiot
- Funktion välittäminen argumenttina
- Asteriksit Pythonissa
Transkripti:
Puhutaan kahdesta argumenttityypistä, joita voit käyttää funktiota kutsuttaessa: sijaintiargumentit ja nimetyt argumentit (a.k.a. avainsana-argumentit).
Positionaaliset argumentit
Kutsuessasi sisäänrakennettua print
-funktiota voit välittää minkä tahansa määrän argumentteja positionaalisesti.välitämme tässä neljä positionaalista argumenttia:
>>> print(2, 1, 3, 4)2 1 3 4
Kutsumme näitä positionaalisiksi argumenteiksi, koska niiden sijainnilla on merkitystä.Näiden argumenttien järjestyksellä on merkitystä: ensimmäinen argumentti tulostetaan ensimmäisenä; viimeinen tulostetaan viimeisenä.
Sana-argumentit (eli nimetyt argumentit)
Funktio print
hyväksyy myös joitakin argumentteja avainsana-argumentteina.
Funktio print
hyväksyy valinnaisen sep
-argumentin (joka on oletusarvoisesti välilyönti).
>>> print(2, 1, 3, 4, sep=' ')2 1 3 4>>> print(2, 1, 3, 4)2 1 3 4>>> print(2, 1, 3, 4, sep='-')2-1-3-4>>> print(2, 1, 3, 4, sep=', ')2, 1, 3, 4
Tämä sep
-argumentti määrittelee erottimen, joka tulostetaan jokaisen print
:lle annetun sijaintiargumentin väliin.
Funktiossa on myös valinnainen end
-avainsana-argumentti.end
-argumentti on oletusarvoisesti rivinvaihtomerkki:
>>> print(2, 1, 3, 4, sep=', ', end='\n')2, 1, 3, 4
Mutta voimme laittaa end
-argumenttiin (ennen rivinvaihtoa) huutomerkkejä tulostaaksemme huutomerkit loppuun:
>>> print(2, 1, 3, 4, sep=', ', end='!!\n')2, 1, 3, 4!!
Avainsana-argumenttien järjestyksellä ei ole väliä
Funktion print
sep
– ja end
-argumenttien sep
– ja end
järjestyksellä ei ole oikeastaan merkitystä.
>>> print(2, 1, 3, 4, end='!!\n', sep=', ')2, 1, 3, 4!!
Näiden kanssa järjestyksellä ei ole väliä, koska ne eivät ole asema-argumentteja: ne ovat nimettyjä argumentteja.
Asema-argumenttien arvojen välissä on pilkku.
>>> print(2, 1, 3, 4)2 1 3 4
Avainsana-argumentit (a.k.a. named arguments) on näiden arvojen ja pilkkujen lisäksi nimi ja yhtäsuuruusmerkki.
>>> print(2, 1, 3, 4, sep=',', end='!\n')2,1,3,4!
Sana-argumenttien on tultava kaikkien asema-argumenttien jälkeen.Tämän lisäksi avainsana-argumenttien sijainnilla ei ole mitään väliä: nimellä on väliä, ei sijainnilla.
Avainsana-argumenttien käyttäminen asema-argumenttien sijaan
Sana-argumentit eivät ole käyttökelpoisia vain funktioissa, jotka hyväksyvät minkä tahansa lukumäärän asema-argumentteja (niin kuin print
:n).Voit välittää avainsana-argumentteja lähes mihin tahansa Pythonin funktioon.
Esimerkiksi sisäänrakennettu sum
-funktio hyväksyy ensimmäisen argumentin:
>>> sum()10
Mutta se hyväksyy myös toisen argumentin, jonka oletusarvo on nolla:
>>> sum(, 0)10
Jos muutamme tuon toisen argumentin arvoksi 1
, näemme, että tämä on palautetun yhteenlaskun alkuarvo:
>>> sum(, 1)11
Minä näkisin paljon mieluummin, että tätä funktiota kutsuttaisiin näin:
>>> sum(, start=1)11
Yljitämme yhden positionaalisen argumentin ja yhden avainsana-argumentin.
Tämä start=1
toimii sum
:n kanssa, koska start
on tuon argumentin nimi.sum
-funktion dokumentaatiossa sanotaan, että toinen argumentti, jonka nimi on start
:
>>> help(sum)Help on built-in function sum in module builtins:sum(iterable, /, start=0) Return the sum of a 'start' value (default: 0) plus an iterable of numbers When the iterable is empty, return the start value. This function is intended specifically for use with numeric values and may reject non-numeric types.
Silloin kun työskentelet nimettyjen argumenttien (eli avainsana-argumenttien) kanssa, argumentin nimellä on oikeasti väliä!Kun taas kun taas työskentelet paikannusargumenttien kanssa, sijainti on merkittävä.
Yhteenveto
Kun kutsumme funktiota Pythonissa, voimme välittää kahdenlaisia argumentteja:
- positioargumentit
- nimelliset argumentit (a.k.a. avainsana-argumentit)
Nimelliset argumentit voivat joskus tehdä koodistasi hieman havainnollisempaa, koska olet antanut nimen objektille, jonka käyttötarkoitus ei ehkä muuten kävisi selväksi pelkän sijainnin perusteella funktiokutsussa.
Haluatko nähdä lisää Python-aiheita selitettynä?
Hei ystävällinen verkkokävijä! 👋
Tämä sivu on osa Python Morsels -verkkopalvelua, jossa kehitetään Python-taitoja.
Paras tapa oppia on tekemällä. Pythonin tapauksessa se tarkoittaa Python-koodin kirjoittamista. Jos haluat parantaa Python-taitojasi joka viikko, kokeile Python Morsels -palvelua syöttämällä sähköpostiosoitteesi alla ja luomalla tili.
Python Morselsin aihepiirisivut ovat ilmaisia ja ensimmäisen kuukauden harjoitukset ovat myös ilmaisia. Sinun ei tarvitse syöttää maksutietoja rekisteröityäksesi.
Löydät selityksiä monista muista Python-aiheista rekisteröitymällä alla.
Kirjoittautumalla hyväksyt tietosuojakäytännön.
Kirjoittautumalla hyväksyt tietosuojakäytännön.