În Python, când definim funcții cu valori implicite pentru anumiți parametri, se spune că are argumentele setate ca opțiune pentru utilizator. Utilizatorii își pot transmite valorile sau pot pretinde că funcția le folosește valorile implicite care sunt specificate.
În acest fel, utilizatorul poate apela funcția fie prin transmiterea acelor parametri opționali, fie doar prin transmiterea parametrilor necesari.
Există două moduri principale de a transmite parametrii opționali în python
salvarea gimp ca jpeg
- Fără a folosi argumente de cuvinte cheie.
- Prin utilizarea argumentelor de cuvinte cheie.
Trecerea fără a utiliza argumente de cuvinte cheie
Unul dintre punctele principale de care trebuie avut grijă atunci când treceți fără a utiliza argumente ale cuvintelor cheie este:
- Ordinea parametrilor trebuie menținută, adică ordinea în care parametrii sunt definiți în funcție ar trebui menținută în timpul apelării funcției.
- Valorile parametrilor non-opționali ar trebui să fie transmise, altfel va genera o eroare.
- Valoarea argumentelor implicite poate fi fie transmisă, fie ignorată.
Mai jos sunt câteva coduri care explică acest concept.
Exemplul 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>))> |
>
>
Ieșire:
4 1099>
Exemplul 2: putem trece şiruri.
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'>)> |
>
>
Ieșire:
GeeksForGeeks GeeksForGeeks>
Trecerea cu argumente de cuvinte cheie
Când funcțiile sunt definite, atunci parametrii sunt scriși sub forma tipul de date nume-cheie. Deci, python oferă un mecanism de apelare a funcției folosind numele cuvântului cheie pentru transmiterea valorilor. Acest lucru îl ajută pe programator eliberându-i să nu învețe secvența sau ordinea în care trebuie să treacă parametrii.
Câteva puncte importante pe care trebuie să le reținem sunt următoarele:
- În acest caz, nu suntem obligați să menținem ordinea de trecere a valorilor.
- Nu ar trebui să existe nicio diferență între numele de cuvinte cheie transmise și declarate.
Mai jos este codul pentru implementarea acestuia.
Python3
salvat de
# 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'>)> |
>
>
Ieșire:

După cum putem vedea că nu avem nevoie de menținerea unei ordini în exemplul de mai sus. De asemenea, putem vedea că atunci când încercăm să trecem doar parametrii opționali, atunci se ridică o eroare. Acest lucru se întâmplă deoarece parametrii opționali pot fi omiși, deoarece au o valoare implicită cu ei, dar nu putem omite parametrii necesari (șir1 în cazul de mai sus.) Prin urmare, arată o eroare cu indicatorul: lipsește 1 argument necesar.
Acest exemplu va oferi o idee mai detaliată a subiectului de mai sus:
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'>)> |
>
>
adăugarea șirurilor de caractere java
Ieșire:
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>
Deci, practic, python verifică apelurile funcționale numai dacă numărul necesar de parametri funcționali este trecut sau nu.
Mai jos arată cazul în care un utilizator încearcă să transmită argumente în ambele moduri discutate mai sus, împreună cu precauția dată:
Python3
def> comp(a, b>=>2>):> >if>(a print('first parameter is smaller') if(a>b): print('al doilea parametru este mai mic') if(a == b): print('ambele sunt de valoare egală.') print('primul apel') comp(1) print( 'al doilea apel') comp(2, 1) print('al treilea apel') comp(b=1, a=-1) print('al patrulea apel') 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>
Deci un lucru ar trebui să ne amintim că argumentul cuvânt cheie ar trebui să fie folosit după ce toate argumentele poziționale sunt transmise. Prin urmare, acesta este un lucru important pe care trebuie să-l ținem cont atunci când trecem parametrii în ambele moduri către aceeași funcție.