logo

Hvordan sende valgfrie parametere til en funksjon i Python?

I Python, når vi definerer funksjoner med standardverdier for visse parametere, sies det å ha sine argumenter satt som et alternativ for brukeren. Brukere kan enten sende verdiene sine eller kan late som om funksjonen bruker standardverdiene som er spesifisert.

På denne måten kan brukeren kalle funksjonen ved å enten sende de valgfrie parameterne eller bare sende de nødvendige parameterne.



Det er to hovedmåter å sende valgfrie parametere i python

java skilletegn
  • Uten å bruke søkeordargumenter.
  • Ved å bruke søkeordargumenter.

Bestått uten å bruke søkeordargumenter

Et hovedpoeng som må tas vare på når du passerer uten å bruke søkeordargumenter er:

  • Rekkefølgen på parametere skal opprettholdes, dvs. rekkefølgen parametere er definert i i funksjon skal opprettholdes mens funksjonen kalles.
  • Verdiene for de ikke-valgfrie parameterne bør sendes ellers vil det gi en feil.
  • Verdien av standardargumentene kan enten sendes eller ignoreres.

Nedenfor er noen koder som forklarer dette konseptet.



Eksempel 1:

Python3






# Here b is predefined and hence is optional.> def> func(a, b>=>1098>):> >return> a>+>b> print>(func(>2>,>2>))> # this 1 is represented as 'a' in the function and> # function uses the default value of b> print>(func(>1>))>

>

>

Produksjon:

4 1099>

Eksempel 2: vi kan også sende strenger.

Python3




# Here string2 is the default string used> def> fun2(string1, string2>=>'Geeks'>):> >print>(string1>+> string2)> # calling the function using default value> fun2(>'GeeksFor'>)> # calling without default value.> fun2(>'GeeksFor'>,>'Geeks'>)>

>

>

Produksjon:

GeeksForGeeks GeeksForGeeks>

Bestått med søkeordargumenter

Når funksjoner er definert, skrives parameterne i formen datatype nøkkelord-navn. Så python gir en mekanisme for å kalle funksjonen ved å bruke nøkkelordnavnet for å sende verdiene. Dette hjelper programmereren ved å avlaste dem for ikke å lære sekvensen eller rekkefølgen parametrene skal sendes i.

Noen viktige punkter vi må huske er som følger:

  • I dette tilfellet er vi ikke pålagt å opprettholde rekkefølgen for å overføre verdiene.
  • Det skal ikke være noen forskjell mellom godkjente og erklærte søkeordnavn.

Nedenfor er koden for implementeringen.

Python3


html listeboks



# Here string2 is the default string used> def> fun2(string1, string2>=>'Geeks'>):> >print>(string1>+> string2)> # Thiscan be a way where no order is needed.> fun2(string2>=>'GeeksFor'>, string1>=>'Geeks'>)> # since we are not mentioning the non-default argument> # so it will give error.> fun2(string2>=>'GeeksFor'>)>

>

>

Produksjon:

Som vi kan se at vi ikke krever at noen rekkefølge opprettholdes i eksemplet ovenfor. Vi kan også se at når vi prøver å sende bare de valgfrie parameterne, oppstår det en feil. Dette skjer siden valgfrie parametere kan utelates siden de har en standard med seg, men vi kan ikke utelate nødvendige parametere (streng1 i tilfellet ovenfor.) Derfor viser den en feil med flagget: mangler 1 nødvendig argument.

Dette eksemplet vil gi en mer innsikt i emnet ovenfor:

Python3




def> func(a, b, c>=>'geeks'>):> >print>(a,>'type is'>,>type>(a))> >print>(b,>'type is'>,>type>(b))> >print>(c,>'type is'>,>type>(c))> # The optional parameters will not decide> # the type of parameter passed.> # also the order is maintained> print>(>'first call'>)> func(>2>,>'z'>,>2.0>)> # below call uses the default> # mentioned value of c> print>(>'second call'>)> func(>2>,>1>)> # The below call (in comments) will give an error> # since other required parameter is not passed.> # func('a')> print>(>'third call'>)> func(c>=>2>, b>=>3>, a>=>'geeks'>)>

>

java liste over
>

Produksjon:

first call 2 type is z type is 2.0 type is second call 2 type is 1 type is geeks type is third call geeks type is 3 type is 2 type is>

Så i utgangspunktet sjekker python funksjonelle kall bare om det nødvendige antallet funksjonelle parametere er bestått eller ikke.

Nedenfor viser tilfellet der en bruker prøver å sende argumenter på begge måter diskutert ovenfor sammen med forholdsreglene gitt:

Python3




def> comp(a, b>=>2>):> >if>(a print('first parameter is smaller') if(a>b): print('andre parameter er mindre') if(a == b): print('begge har samme verdi.') print('første anrop') comp(1) print( 'andre anrop') comp(2, 1) print('third call') comp(b=1, a=-1) print('fjerde anrop') comp(-1, b=0 )>

>

>

Produksjon:

first call first parameter is smaller second call second parameter is smaller third call first parameter is smaller fourth call first parameter is smaller>

Så én ting bør vi huske at søkeordargumentet skal brukes etter at alle posisjonsargumenter er bestått. Derfor er dette en viktig ting vi må huske på mens vi sender parametere på begge måter til samme funksjon.