logo

Jak przekazać opcjonalne parametry do funkcji w Pythonie?

W Pythonie, gdy definiujemy funkcje z domyślnymi wartościami niektórych parametrów, mówi się, że ich argumenty są ustawione jako opcja dla użytkownika. Użytkownicy mogą albo przekazywać swoje wartości, albo udawać, że funkcja używa określonych wartości domyślnych.

W ten sposób użytkownik może wywołać funkcję, przekazując te opcjonalne parametry lub po prostu przekazując wymagane parametry.



Istnieją dwa główne sposoby przekazywania opcjonalnych parametrów w Pythonie

data Java teraz
  • Bez użycia argumentów słów kluczowych.
  • Używając argumentów słów kluczowych.

Przekazywanie bez użycia argumentów słów kluczowych

Najważniejszą kwestią, na którą należy zwrócić uwagę podczas przekazywania bez użycia argumentów słów kluczowych, jest:

  • Należy zachować kolejność parametrów, czyli podczas wywoływania funkcji należy zachować kolejność definiowania parametrów w funkcji.
  • Należy przekazać wartości parametrów nieopcjonalnych, w przeciwnym razie zgłosi błąd.
  • Wartość argumentów domyślnych można przekazać lub zignorować.

Poniżej znajduje się kilka kodów wyjaśniających tę koncepcję.



Przykład 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>))>

>

>

Wyjście:

4 1099>

Przykład 2: możemy również przekazywać ciągi znaków.

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

>

>

Wyjście:

GeeksForGeeks GeeksForGeeks>

Przekazywanie z argumentami słów kluczowych

Kiedy funkcje są zdefiniowane, parametry są zapisywane w postaci typu danych nazwa-słowa kluczowego. Zatem Python zapewnia mechanizm wywoływania funkcji przy użyciu słowa kluczowego name do przekazywania wartości. Pomaga to programiście, odciążając go od konieczności uczenia się sekwencji lub kolejności przekazywania parametrów.

Oto kilka ważnych punktów, o których musimy pamiętać:

  • W tym przypadku nie mamy obowiązku zachowywania kolejności przekazywania wartości.
  • Nie powinno być żadnej różnicy pomiędzy przekazanymi i zadeklarowanymi nazwami słów kluczowych.

Poniżej znajduje się kod jego implementacji.

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

>

>

Wyjście:

Java wykonaj pętlę while

Jak widzimy, w powyższym przykładzie nie wymagamy zachowania żadnej kolejności. Widzimy również, że gdy próbujemy przekazać tylko parametry opcjonalne, pojawia się błąd. Dzieje się tak, ponieważ parametry opcjonalne można pominąć, ponieważ mają one wartość domyślną, ale nie możemy pominąć parametrów wymaganych (w powyższym przypadku ciąg 1). Dlatego wyświetla błąd z flagą: brak 1 wymaganego argumentu.

Ten przykład da lepszy wgląd w powyższy temat:

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

>

>

Wyjście:

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>

Zasadniczo wywołania funkcjonalne Pythona sprawdzają tylko, czy została przekazana wymagana liczba parametrów funkcjonalnych.

Poniżej przedstawiono przypadek, w którym użytkownik próbuje przekazać argumenty na oba sposoby omówione powyżej, z uwzględnieniem podanych środków ostrożności:

Python3


Liczba pierwsza w Javie



def> comp(a, b>=>2>):> >if>(a print('first parameter is smaller') if(a>b): print('drugi parametr jest mniejszy') if(a == b): print('oba mają taką samą wartość.') print('pierwsze wywołanie') comp(1) print( 'drugie połączenie') comp(2, 1) print('trzecie połączenie') comp(b=1, a=-1) print('czwarte połączenie') comp(-1, b=0 )>

>

>

Wyjście:

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

Warto więc pamiętać o jednym: argumentu słowa kluczowego należy używać po przekazaniu wszystkich argumentów pozycyjnych. Dlatego jest to ważna rzecz, o której musimy pamiętać podczas przekazywania parametrów w obie strony do tej samej funkcji.