logo

Kā Python funkcijai nodot izvēles parametrus?

Programmā Python, kad mēs definējam funkcijas ar noklusējuma vērtībām noteiktiem parametriem, tiek teikts, ka tā argumenti ir iestatīti kā lietotāja opcija. Lietotāji var nodot savas vērtības vai izlikties, ka funkcija izmanto savas norādītās noklusējuma vērtības.

Tādā veidā lietotājs var izsaukt funkciju, vai nu nododot šos izvēles parametrus, vai vienkārši nododot nepieciešamos parametrus.



Ir divi galvenie veidi, kā python nodot izvēles parametrus

nfa konvertēšana uz dfa
  • Neizmantojot atslēgvārdu argumentus.
  • Izmantojot atslēgvārdu argumentus.

Nokārtošana, neizmantojot atslēgvārdu argumentus

Daži galvenie punkti, kas jāievēro, ejot garām, neizmantojot atslēgvārdu argumentus, ir:

  • Parametru secība ir jāsaglabā, t.i., secība, kādā parametri tiek definēti funkcijā, ir jāsaglabā funkcijas izsaukšanas laikā.
  • Neobligāto parametru vērtības ir jānodod, pretējā gadījumā tiks parādīta kļūda.
  • Noklusējuma argumentu vērtību var nodot vai ignorēt.

Tālāk ir sniegti daži kodi, kas izskaidro šo jēdzienu.



1. piemērs:

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

>

>

Izvade:

4 1099>

2. piemērs: mēs varam arī nodot stīgas.

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

>

>

Izvade:

GeeksForGeeks GeeksForGeeks>

Nodošana ar atslēgvārdu argumentiem

Kad funkcijas ir definētas, tad parametri tiek ierakstīti formā datatype atslēgvārdu nosaukums. Tātad python nodrošina mehānismu funkcijas izsaukšanai, izmantojot atslēgvārda nosaukumu vērtību nodošanai. Tas palīdz programmētājam, neļaujot viņam apgūt secību vai secību, kādā parametri ir jānodod.

Daži svarīgi punkti, kas mums jāatceras, ir šādi:

  • Šajā gadījumā mums nav jāuztur vērtību nodošanas kārtība.
  • Starp nodotajiem un deklarētajiem atslēgvārdu nosaukumiem nevajadzētu būt atšķirībām.

Zemāk ir kods tā ieviešanai.

Python3




pawandeep rajan

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

>

>

Izvade:

Kā redzam, iepriekš minētajā piemērā mums nav jāuztur kārtība. Mēs arī redzam, ka, mēģinot nodot tikai neobligātos parametrus, tas rada kļūdu. Tas notiek, jo neobligātos parametrus var izlaist, jo tiem ir noklusējuma parametri, taču mēs nevaram izlaist obligātos parametrus (virkne1 iepriekš minētajā gadījumā). Tādējādi tiek parādīta kļūda ar karogu: trūkst 1 obligātā argumenta.

Šis piemērs sniegs plašāku priekšstatu par iepriekš minēto tēmu:

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

>

>

pārveidot virkni par int

Izvade:

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>

Tātad būtībā python funkcionālie izsaukumi pārbauda tikai tad, ja ir nokārtots nepieciešamais funkcionālo parametru skaits.

Tālāk ir parādīts gadījums, kad lietotājs mēģina nodot argumentus abos iepriekš aprakstītajos veidos, kā arī norādīto piesardzības pasākumu.

Python3




def> comp(a, b>=>2>):> >if>(a print('first parameter is smaller') if(a>b): print('otrais parametrs ir mazāks') if(a == b): print('abi ir vienādas vērtības.') print('pirmais izsaukums') comp(1) print( 'otrais zvans') comp(2, 1) print('trešais zvans') comp(b=1, a=-1) print('ceturtais zvans') comp(-1, b=0 )>>

> 

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

Tāpēc jāatceras viena lieta, ka atslēgvārda arguments ir jāizmanto pēc visu pozicionālo argumentu nodošanas. Tāpēc šī ir svarīga lieta, kas mums jāpatur prātā, nododot parametrus abos veidos vienai funkcijai.