Positionella och nyckelordsargument

maj 16, 2021
admin

Relaterad artikel:

  • Funktioner
  • Förmedla en funktion som ett argument
  • Asterisker i Python

Transkript:

Låt oss tala om de två typerna av argument som du kan använda när du anropar en funktion: positionella argument och namngivna argument (a.k.a. nyckelordsargument).

Positionella argument

När du anropar den inbyggda print-funktionen kan du skicka in hur många argument som helst positionellt.Vi skickar in fyra positionella argument här:

>>> print(2, 1, 3, 4)2 1 3 4

Vi kallar dessa positionella argument eftersom deras position har betydelse.Ordningen på dessa argument är viktig: det första argumentet skrivs ut först, det sista skrivs ut sist.

Nyckelordsargument (a.k.a. namngivna argument)

Funktionen print accepterar också vissa argument som nyckelordsargument.

Funktionen print accepterar ett valfritt sep-argument (som är ett mellanslag som standard).

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

Detta sep-argument definierar separatorn som ska skrivas ut mellan vart och ett av de positionsargument som ges till print.

Det finns också ett valfritt end-argument för nyckelord.end-argumentet är som standard ett newline-tecken:

>>> print(2, 1, 3, 4, sep=', ', end='\n')2, 1, 3, 4

Men vi kan sätta några utropstecken i end-argumentet (före ett newline-tecken) för att skriva ut utropstecken i slutet:

>>> print(2, 1, 3, 4, sep=', ', end='!!\n')2, 1, 3, 4!!

Storordningen på nyckelordsargumenten spelar ingen roll

Storordningen på print-funktionens sep och end-argument spelar egentligen ingen roll.

>>> print(2, 1, 3, 4, end='!!\n', sep=', ')2, 1, 3, 4!!

För dessa spelar ordningen ingen roll eftersom de inte är positionsargument utan namngivna argument.

Positionsargument har kommatecken mellan sina värden.

>>> print(2, 1, 3, 4)2 1 3 4

Nyckelordsargument (a.k.a. namngivna argument) har ett namn och ett likhetstecken utöver dessa värden och kommatecken.

>>> print(2, 1, 3, 4, sep=',', end='!\n')2,1,3,4!

Nyckelordsargument måste komma efter alla positionella argument.Utöver det spelar positionen för nyckelordsargument ingen roll alls: det är namnet som spelar roll, inte positionen.

Användning av nyckelordsargument i stället för positionella argument

Nyckelordsargument är inte bara användbara för funktioner som accepterar ett obegränsat antal positionella argument (som print).Du kan skicka nyckelordsargument till nästan alla funktioner i Python.

Den inbyggda funktionen sum accepterar till exempel ett första argument:

>>> sum()10

Men den accepterar också ett andra argument, som är noll som standard:

>>> sum(, 0)10

Om vi ändrar det andra argumentet till 1 ser vi att detta är startvärdet för den returnerade summeringen:

>>> sum(, 1)11

Jag skulle hellre se att den här funktionen anropas så här:

>>> sum(, start=1)11

Vi skickar in ett positionsargument och ett nyckelordsargument.

Detta start=1 fungerar med sum eftersom start är namnet på det argumentet.I dokumentationen för sum-funktionen står det att det andra argumentet som kallas 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.

Så när du jobbar med namngivna argument (alias nyckelordsargument) är det faktiskt namnet på argumentet som spelar roll!Medan när du jobbar med positionsargument är det positionen som är viktig.

Sammanfattning

När vi anropar en funktion i Python kan vi skicka in två olika typer av argument:

  1. positionella argument
  2. namngivna argument (a.k.a. nyckelordsargument)

Namngivna argument kan ibland göra din kod lite mer beskrivande eftersom du har gett ett namn till ett objekt vars användning annars kanske inte skulle vara tydlig bara genom dess position i ett funktionsanrop.

Vill du se fler Python-ämnen förklarade?

Hej vänliga webbesökare! 👋

Den här sidan är en del av Python Morsels, en tjänst för att bygga upp Pythonkunskaper online.

Det bästa sättet att lära sig är genom att göra. När det gäller Python innebär det att skriva Pythonkod. Om du vill förbättra dina Pythonkunskaper varje vecka kan du prova Python Morsels genom att ange din e-postadress nedan för att skapa ett konto.

Python Morsels ämnessidor är gratis och den första månadens övningar är också gratis. Du behöver inte ange betalningsuppgifter för att registrera dig.

Du kan hitta förklaringar till många andra Python-ämnen genom att registrera dig nedan.

Du godkänner sekretesspolicyn genom att registrera dig.

Lämna ett svar

Din e-postadress kommer inte publiceras.