Positionaaliset vs. avainsana-argumentit

touko 16, 2021
admin

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 endjä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:

  1. positioargumentit
  2. 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.

Vastaa

Sähköpostiosoitettasi ei julkaista.