Positionelle vs. nøgleordsargumenter

maj 16, 2021
admin

Relateret artikel:

  • Funktioner
  • Funktioner som et argument
  • Asterisker i Python

Transskript:

Lad os tale om de to typer af argumenter, du kan bruge, når du kalder en funktion: positionelle argumenter og navngivne argumenter (a.k.a. nøgleordsargumenter).

Positionsargumenter

Når du kalder den indbyggede print-funktion, kan du indgive et vilkårligt antal argumenter positionelt. vi indgiver fire positionsargumenter her:

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

Vi kalder disse positionsargumenter, fordi deres position er vigtig.Rækkefølgen af disse argumenter er vigtig: Det første argument udskrives først; det sidste udskrives sidst.

Nøgleordsargumenter (alias navngivne argumenter)

printFunktionen print accepterer også nogle argumenter som nøgleordsargumenter.

Funktionen print accepterer et valgfrit sep-argument (der som standard er et mellemrumstegn).

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

Dette sep-argument definerer den separator, der skal udskrives mellem hvert af de positionelle argumenter, der er givet til print.

Der er også et valgfrit end-argument som nøgleord.end-argumentet er som standard et newline-tegn:

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

Men vi kan sætte nogle udråbstegn i end-argumentet (før en newline) for at udskrive udråbstegn i slutningen:

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

Rækkefølgen af nøgleordsargumenter er ligegyldig

Rækkefølgen af print-funktionens sep– og end-argumenter er faktisk ligegyldig.

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

Rækkefølgen er ligegyldig med disse, fordi de ikke er positionsargumenter: de er navngivne argumenter.

Positionsargumenter har kommaer mellem deres værdier.

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

Nøgleordargumenter (a.k.a. navngivne argumenter) har et navn og et lighedstegn ud over disse værdier og kommaer.

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

Nøgleordsargumenter skal komme efter alle positionelle argumenter.Ud over det er positionen for nøgleordsargumenter fuldstændig ligegyldig: det er navnet, der betyder noget, ikke positionen.

Brug af nøgleordsargumenter i stedet for positionelle argumenter

Nøgleordsargumenter er ikke kun nyttige til funktioner, der accepterer et vilkårligt antal positionelle argumenter (som print).Du kan overdrage nøgleordsargumenter til stort set alle funktioner i Python.

Den indbyggede sum-funktion accepterer f.eks. et første argument:

>>> sum()10

Men den accepterer også et andet argument, der som standard er nul:

>>> sum(, 0)10

Hvis vi ændrer det andet argument til 1, vil vi se, at dette er startværdien for den returnerede summering:

>>> sum(, 1)11

Jeg ville meget hellere se denne funktion blive kaldt på denne måde:

>>> sum(, start=1)11

Vi indsender et positionelt argument og et nøgleordsargument.

Dette start=1 fungerer med sum, fordi start er navnet på dette argument.I dokumentationen for sum-funktionen står der, at det andet argument, der hedder 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 arbejder med navngivne argumenter (alias nøgleordsargumenter), er det faktisk navnet på argumentet, der betyder noget!Mens når du arbejder med positionsargumenter, er det positionen, der er vigtig.

Summary

Når vi kalder en funktion i Python, kan vi overdrage to forskellige typer af argumenter:

  1. positionelle argumenter
  2. navneargumenter (a.k.a. keyword arguments)

Navneargumenter kan nogle gange gøre din kode lidt mere beskrivende, fordi du har givet et navn til et objekt, hvis anvendelse ellers måske ikke ville være tydelig blot ved dets position i et funktionsopkald.

Vil du se flere Python-emner forklaret?

Hej, venlige webbesøgende! 👋

Denne side er en del af Python Morsels, en online tjeneste til opbygning af færdigheder i Python.

Den bedste måde at lære på er ved at gøre. I Pythons tilfælde betyder det at skrive Python-kode. Hvis du gerne vil forbedre dine Python-færdigheder hver uge, kan du prøve Python Morsels ved at indtaste din e-mail nedenfor for at oprette en konto.

Python Morsels emnesider er gratis, og den første måneds øvelser er også gratis. Du behøver ikke at indtaste betalingsoplysninger for at tilmelde dig.

Du kan finde forklaringer på mange andre Python-emner ved at tilmelde dig nedenfor.

Ved at tilmelde dig accepterer du privatlivspolitikken.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.