logo

Hur skickar man valfria parametrar till en funktion i Python?

I Python, när vi definierar funktioner med standardvärden för vissa parametrar, sägs det ha sina argument inställda som ett alternativ för användaren. Användare kan antingen skicka sina värden eller kan låtsas att funktionen använder sina standardvärden som är specificerade.

På detta sätt kan användaren anropa funktionen genom att antingen skicka dessa valfria parametrar eller bara skicka de nödvändiga parametrarna.



Det finns två huvudsakliga sätt att skicka valfria parametrar i python

java omrörning till int
  • Utan att använda nyckelordsargument.
  • Genom att använda nyckelordsargument.

Godkänd utan att använda nyckelordsargument

Några huvudpunkter att vara försiktiga när du passerar utan att använda sökordsargument är:

  • Parametrarnas ordning bör bibehållas, dvs. den ordning i vilken parametrar definieras i funktion bör bibehållas när funktionen anropas.
  • Värdena för de icke-valfria parametrarna bör skickas, annars kommer det att ge ett fel.
  • Värdet på standardargumenten kan antingen skickas eller ignoreras.

Nedan finns några koder som förklarar detta koncept.



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

>

>

Produktion:

4 1099>

Exempel 2: vi kan också skicka strängar.

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

>

>

Produktion:

GeeksForGeeks GeeksForGeeks>

Passar med sökordsargument

När funktioner är definierade skrivs parametrarna i formen datatyp nyckelord-namn. Så python tillhandahåller en mekanism för att anropa funktionen med hjälp av nyckelordsnamnet för att skicka värdena. Detta hjälper programmeraren genom att avlasta dem att inte lära sig sekvensen eller i vilken ordning parametrarna ska skickas.

Några viktiga punkter vi måste komma ihåg är följande:

  • I det här fallet är vi inte skyldiga att upprätthålla ordningen för att överföra värdena.
  • Det bör inte finnas någon skillnad mellan godkända och deklarerade nyckelordsnamn.

Nedan finns koden för dess implementering.

Python3




# 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'>)>

>

>

Produktion:

Som vi kan se att vi inte kräver att någon ordning upprätthålls i exemplet ovan. Vi kan också se att när vi försöker skicka endast de valfria parametrarna så ger det upp ett fel. Detta händer eftersom valfria parametrar kan utelämnas eftersom de har en standard med sig, men vi kan inte utelämna nödvändiga parametrar (sträng1 i ovanstående fall.) Därför visar det ett fel med flaggan: saknar 1 obligatoriskt argument.

Detta exempel kommer att ge en mer insikt om ovanstående ämne:

Python3

år datorn uppfanns




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

>

>

Produktion:

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 princip kontrollerar python funktionella anrop endast om det erforderliga antalet funktionella parametrar har godkänts eller inte.

Nedan visar fallet där en användare försöker skicka argument på båda sätten som diskuterats ovan tillsammans med den angivna försiktighetsåtgärden:

Python3




def> comp(a, b>=>2>):> >if>(a print('first parameter is smaller') if(a>b): print('andra parametern är mindre') if(a == b): print('båda har lika värde.') print('första samtalet') comp(1) print( 'andra anrop') komp(2, 1) print('tredje anrop') komp(b=1, a=-1) print('fjärde anrop') komp(-1, b=0 )>

mb vs gb
>

>

Produktion:

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å en sak bör vi komma ihåg att nyckelordsargumentet ska användas efter att alla positionsargument har godkänts. Därför är detta en viktig sak som vi måste ha i åtanke när vi skickar parametrar på båda sätten till samma funktion.