Twoje Centrum Szkoleniowe

Nauczmy się dziś czegoś nowego!

Kurs programowania - Python

PYTHON Funkcje | parametry wejściowe i wyjściowe

 

Funkcja może przyjmować parametry wejściowe oraz zwracać parametry wyjściowe.

 

Parametry wejściowe

Parametry wejściowe, to wartości, które chcemy przekazać do wnętrza funkcji, na których następnie wykonywane są jakieś czynności czy działania.

Dla przykładu weźmy sobie funkcję, która przywita użytkownika po imieniu:

def witaj(imie) :
   print("Witaj", imie)
x = input("Podaj swoje imię: ")
witaj(x)

 

Jak widzimy, w definicji funkcji znalazł się parametr wejściowy o nazwie imie, który następnie pod tą samą nazwą został wykorzystany w wypisaniu.

Podczas wywołania funkcji również musiał zostać podany parametr wejściowy. Liczba parametrów wejściowych w wywołaniu funkcji oraz jej definicji musi być taka sama.

Od razu wspomnę, że od poprzedniego zdania jest wyjątek. Parametr wejściowy może mieć ustaloną wartość domyślną. Wówczas jeśli przy wywołaniu funkcji nie podamy wartości tego parametru, zostanie użyta właśnie wartość domyślna. Zobaczmy to na przykładzie:

def witaj(imie = "Jacek") :
   print("Witaj", imie)
witaj()

 

Jak widzimy definicja funkcji zawiera jeden parametr wejściowy o nazwie imie oraz o domyślnie ustawionej wartości (=) “Jacek”.

Funkcję wywołaliśmy nie podając wartości parametru wejściowego, zatem została wykorzystana wartość domyślna, a na ekran wypisany został tekst: Witaj Jacek.

 

Parametrów wejściowych może nie być, natomiast może ich być również więcej jak jeden. Zobaczmy kolejny przykład:

def witaj(imie, nazwisko) :
   print("Witaj", imie, nazwisko)
x = input("Podaj swoje imię: ")
y = input("Podaj swoje nazwisko: ")
witaj(x,y)

 

Tym razem mamy dwa parametry wejściowe imie oraz nazwisko.

 

Parametry wyjściowe

Przejdźmy od razu do kolejnego przykładu, program obliczający pole kwadratu po długości boku:

def pole_kwadratu(dlugosc_boku) :
   pole = dlugosc_boku**2
   print(pole)
x = int(input("Podaj długość boku kwadratu: "))
pole_kwadratu(x)

 

Mamy zdefiniowaną funkcję pole_kwadratu, która przyjmuje jeden parametr wejściowy, dokonuje na nim obliczeń, następnie wypisuje wynik na ekran. Musimy pamiętać, żeby do funkcji przekazać parametr o właściwym typie. W tym przypadku musi być to liczba.

Funkcja nie musi wypisywać wyniku na ekran, może go zwracać. Zmieńmy zatem powyższy program tak, aby funkcja zwracała wynik:

def pole_kwadratu(dlugosc_boku) :
   pole = dlugosc_boku**2
   return pole
x = int(input("Podaj długość boku kwadratu: "))
pole = pole_kwadratu(x)
print("Pole kwadratu o długości boku", x, "wynosi:", pole)

 

Jak widzimy, pojawiła się nowa linia wewnątrz funkcji w miejscu wypisania. Pojawiło się słowo kluczowe return, następnie nazwa wyliczonej zmiennej – parametr wyjściowy funkcji.

Skoro funkcja zwraca wynik, możemy go przypisać do dowolnej zmiennej podczas jej wywołania:

pole = pole_kwadratu(x)

 

Od tej chwili zmienna pole zawiera wynik działania funkcji, wartość, którą funkcja zwróciła.

 

Adnotacje typów

Przejdźmy teraz do kwestii typów danych w parametrach funkcji Pythona. Choć Python jest językiem dynamicznie typowanym, co oznacza, że typy danych są sprawdzane w czasie wykonania programu, istnieje mechanizm, który pozwala sugerować typy danych parametrów funkcji. Mowa tu o adnotacjach typów, które wprowadzają pewien poziom klarowności co do tego, jakiego typu danych oczekujemy.

Przyjrzyjmy się przykładowi:

def powitanie(imie: str) -> str:
    return "Witaj, " + imie

 

W tej funkcji imie: str wskazuje, że parametr imie powinien być typu str, czyli łańcucha znakowego. Część -> str po nazwie funkcji sugeruje, że funkcja ta zwraca również łańcuch znakowy. Są to tzw. adnotacje typów – dają one znać innym programistom (lub narzędziom do analizy statycznej kodu) o oczekiwaniach dotyczących typów danych w funkcji.

Ważne jest jednak zrozumienie, że te adnotacje są tylko sugestiami i nie wpływają na działanie programu. Interpreter Pythona nie będzie egzekwował, aby imie było rzeczywiście łańcuchem znakowym. Oznacza to, że jeśli przypadkowo lub celowo przekażesz do funkcji powitanie wartość innego typu, Python nie zgłosi błędu związanego z typem danych, chyba że funkcja sama w sobie nie będzie mogła obsłużyć tego typu danych.

Adnotacje typów są przydatne do dokumentowania kodu i mogą pomagać w utrzymaniu jego klarowności, ale nie zapominajmy, że to programista jest odpowiedzialny za zapewnienie, że dane przekazywane do funkcji są odpowiedniego typu. W razie potrzeby, możemy dodać ręczne sprawdzanie typów w ciele funkcji, aby upewnić się, że wszystko działa jak należy.

Testy przypięte do lekcji
Aby uzyskać dostęp do testów i ćwiczeń interaktywnych - Zaloguj się
Aby widzieć ocenę lekcji - Zaloguj się