Wróć do informacji o e-podręczniku Wydrukuj Pobierz materiał do PDF Pobierz materiał do EPUB Pobierz materiał do MOBI Zaloguj się, aby dodać do ulubionych Zaloguj się, aby skopiować i edytować materiał Zaloguj się, aby udostępnić materiał Zaloguj się, aby dodać całą stronę do teczki

Funkcja w programowaniu to czarna skrzynka

Nie zawsze wiesz, co ona zawiera. Masz jednak klucz, możesz ją otworzyć i do niej zajrzeć. Możesz zawsze użyć skrzynki do pewnych zadań, które potrafi wykonać za pomocą tego, co zawiera w środku. Ale nie musisz dokładnie wiedzieć, jak to robi – wystarczy, że wiesz, jaki będzie ostateczny wynik działania skrzynki, i jak sprawić, aby to osiągnąć. Natomiast szczegóły pozostawiasz jej, czyli funkcji – owej czarnej skrzynce.

Jak jest zbudowana funkcja w języku Python 3?

RuNuN2yUxWN6e1
Infografika przedstawia sposób budowania funkcji w języku Python. 1. Nazwa funkcji. Funkcję warto nazywać tak, aby później odzwierciedlała swoją funkcjonalność, 2. Parametry. Funkcja może posiadać różne parametry. W tej chwili skup się na tym, aby tworzyć proste funkcje z maksymalnie kilkoma parametrami, 3. Docstring. Krótki opis funkcji, widoczny dla innych programistów, 4. Ciało funkcji. Wszystkie operacje, które są wykonywane wewnątrz funkcji, 5. Return. Wartość zwracana przez funkcję - w tej chwili zapamiętaj, że może ich być wiele. Na zdjęciu widoczny kod w ramce. Kolejne linie kodu: 1 Python 3.6.7 otworzyć nawias default, Oct 22 2018, 11:32:17 zamknąć nawias 2 otworzyć kwadratowy nawias GCC 8.2.0 zamknąć kwadratowy nawias on linux 3 Type cudzysłów help cudzysłów, copyright”, „credits” or „license” otworzyć i zamknąć nawias cudzysłów for more information. 4 3 znaki większe niż def nazwa_funkcji otworzyć nawias parametr podkreślnik 1, parametr podkreślnik 2 zamknąć nawias: 5 trzykrotny apostrof trzykrotny znak większe niż 6 parametr podkreślnik 1 dywiz int 7 parametr podkreślnik 2 dywiz int 8 zwraca sumę parametrów - int 9 trzykrotny apostrof 10 wynik = parametr podkreślnik 1 + parametr podkreślnik 2 11 return wynik 12 13 trzykrotny znak większe niż
Funkcja w Python 3 – definicja
Linia 1. def nazwa podkreślnik funkcji otwórz nawias okrągły parametr podkreślnik 1 przecinek parametr podkreślnik 2 zamknij nawias okrągły dwukropek. Linia 2. apostrof apostrof apostrof. Linia 3. parametr podkreślnik 1 minus int. Linia 4. parametr podkreślnik 2 minus int. Linia 5. zwraca sumę parametrów minus int. Linia 6. apostrof apostrof apostrof. Linia 7. wynik znak równości parametr podkreślnik 1 plus parametr podkreślnik 2. Linia 8. return wynik.

FunkcjęfunkcjaFunkcję w języku Python definiujesz po to, aby móc używać jej później w wielu miejscach w swoim programie. Zauważ, że w powyższym przykładzie funkcja zawiera dwa parametryparametrparametry: parametr_1 i parametr_2. Następnie w jej wnętrzu, a więc w kodzie, który jest wykonywany, oba te parametry są sumowane, a suma przypisywana jest do zmiennej wynik. Na końcu zmienna wynik jest zwracana przez słowo kluczowe return.

Inne sposoby definiowania parametrów funkcji

Pythonie możesz przekazywać do funkcji określoną liczbę parametrów, które zdefiniujesz w funkcji. Takie parametry nazywa się parametrami wymaganymi.

Linia 1. Python 3 kropka 6 kropka 7 otwórz nawias okrągły default przecinek Oct 22 2018 przecinek 11 dwukropek 32 dwukropek 17 zamknij nawias okrągły. Linia 2. otwórz nawias kwadratowy GCC 8 kropka 2 kropka 0 zamknij nawias kwadratowy on linux. Linia 3. Type cudzysłów help cudzysłów przecinek cudzysłów copyright cudzysłów przecinek cudzysłów credits cudzysłów or cudzysłów license otwórz nawias okrągły zamknij nawias okrągły cudzysłów for more information kropka. Linia 4. zamknij nawias ostrokątny zamknij nawias ostrokątny zamknij nawias ostrokątny def nazwa podkreślnik funkcji otwórz nawias okrągły parametr podkreślnik 1 przecinek parametr podkreślnik 2 zamknij nawias okrągły dwukropek. Linia 5. apostrof apostrof apostrof. Linia 6. parametr podkreślnik 1 minus int. Linia 7. parametr podkreślnik 2 minus int. Linia 8. zwraca sumę parametrów minus int. Linia 9. apostrof apostrof apostrof. Linia 10. wynik znak równości parametr podkreślnik 1 plus parametr podkreślnik 2. Linia 11. return wynik. Linia 13. zamknij nawias ostrokątny zamknij nawias ostrokątny zamknij nawias ostrokątny nazwa podkreślnik funkcji otwórz nawias okrągły 12 przecinek 45 zamknij nawias okrągły. Linia 14. 57.

Podczas wywoływania funkcji trzeba podać wszystkie parametry, inaczej wykonanie funkcji zakończy się błędem.

Linia 1. Python 3 kropka 6 kropka 7 otwórz nawias okrągły default przecinek Oct 22 2018 przecinek 11 dwukropek 32 dwukropek 17 zamknij nawias okrągły. Linia 2. otwórz nawias kwadratowy GCC 8 kropka 2 kropka 0 zamknij nawias kwadratowy on linux. Linia 3. Type cudzysłów help cudzysłów przecinek cudzysłów copyright cudzysłów przecinek cudzysłów credits cudzysłów or cudzysłów license otwórz nawias okrągły zamknij nawias okrągły cudzysłów for more information kropka. Linia 4. zamknij nawias ostrokątny zamknij nawias ostrokątny zamknij nawias ostrokątny def nazwa podkreślnik funkcji otwórz nawias okrągły parametr podkreślnik 1 przecinek parametr podkreślnik 2 zamknij nawias okrągły dwukropek. Linia 5. apostrof apostrof apostrof. Linia 6. parametr podkreślnik 1 minus int. Linia 7. parametr podkreślnik 2 minus int. Linia 8. zwraca sumę parametrów minus int. Linia 9. apostrof apostrof apostrof. Linia 10. wynik znak równości parametr podkreślnik 1 plus parametr podkreślnik 2. Linia 11. return wynik. Linia 13. zamknij nawias ostrokątny zamknij nawias ostrokątny zamknij nawias ostrokątny nazwa podkreślnik funkcji otwórz nawias okrągły 12 zamknij nawias okrągły. Linia 14. Traceback otwórz nawias okrągły most recent call last zamknij nawias okrągły dwukropek. Linia 15. File cudzysłów otwórz nawias ostrokątny pyshell kratka 3 zamknij nawias ostrokątny cudzysłów przecinek line 1 przecinek in otwórz nawias ostrokątny module zamknij nawias ostrokątny. Linia 16. nazwa podkreślnik funkcji otwórz nawias okrągły 12 zamknij nawias okrągły. Linia 17. TypeError dwukropek nazwa podkreślnik funkcji otwórz nawias okrągły zamknij nawias okrągły missing 1 required positional argument dwukropek apostrof parametr podkreślnik 2 apostrof. Linia 18. zamknij nawias ostrokątny zamknij nawias ostrokątny zamknij nawias ostrokątny.

Parametry mogą mieć wartości domyślne, które zostaną przyjęte, o ile nie podasz takiego parametru jawnie podczas wykonywania funkcji. Oto przykład zdefiniowania takiej wartości domyślnej.

Linia 1. Python 3 kropka 6 kropka 7 otwórz nawias okrągły default przecinek Oct 22 2018 przecinek 11 dwukropek 32 dwukropek 17 zamknij nawias okrągły. Linia 2. otwórz nawias kwadratowy GCC 8 kropka 2 kropka 0 zamknij nawias kwadratowy on linux. Linia 3. Type cudzysłów help cudzysłów przecinek cudzysłów copyright cudzysłów przecinek cudzysłów credits cudzysłów or cudzysłów license otwórz nawias okrągły zamknij nawias okrągły cudzysłów for more information kropka. Linia 4. zamknij nawias ostrokątny zamknij nawias ostrokątny zamknij nawias ostrokątny def nazwa podkreślnik funkcji otwórz nawias okrągły parametr podkreślnik 1 przecinek parametr podkreślnik 2 znak równości 10 zamknij nawias okrągły dwukropek. Linia 5. apostrof apostrof apostrof. Linia 6. parametr podkreślnik 1 minus int. Linia 7. parametr podkreślnik 2 minus int otwórz nawias okrągły wartość domyślna 10 zamknij nawias okrągły. Linia 8. zwraca sumę parametrów minus int. Linia 9. apostrof apostrof apostrof. Linia 10. wynik znak równości parametr podkreślnik 1 plus parametr podkreślnik 2. Linia 11. return wynik. Linia 13. zamknij nawias ostrokątny zamknij nawias ostrokątny zamknij nawias ostrokątny nazwa podkreślnik funkcji otwórz nawias okrągły 2 przecinek 4 zamknij nawias okrągły. Linia 14. 6. Linia 15. zamknij nawias ostrokątny zamknij nawias ostrokątny zamknij nawias ostrokątny nazwa podkreślnik funkcji otwórz nawias okrągły 2 zamknij nawias okrągły. Linia 16. 12. Linia 17. zamknij nawias ostrokątny zamknij nawias ostrokątny zamknij nawias ostrokątny.

Parametry domyślne możesz wykorzystywać również w inny sposób. Pozwalają one wywoływać funkcję w dosyć czytelny sposób, podając nazwy parametrów przy wywołaniu – oto przykład.

Linia 1. Python 3 kropka 6 kropka 7 otwórz nawias okrągły default przecinek Oct 22 2018 przecinek 11 dwukropek 32 dwukropek 17 zamknij nawias okrągły. Linia 2. otwórz nawias kwadratowy GCC 8 kropka 2 kropka 0 zamknij nawias kwadratowy on linux. Linia 3. Type cudzysłów help cudzysłów przecinek cudzysłów copyright cudzysłów przecinek cudzysłów credits cudzysłów or cudzysłów license otwórz nawias okrągły zamknij nawias okrągły cudzysłów for more information kropka. Linia 4. zamknij nawias ostrokątny zamknij nawias ostrokątny zamknij nawias ostrokątny def nazwa podkreślnik funkcji otwórz nawias okrągły parametr podkreślnik 1 znak równości 20 przecinek parametr podkreślnik 2 znak równości 10 zamknij nawias okrągły dwukropek. Linia 5. apostrof apostrof apostrof. Linia 6. parametr podkreślnik 1 minus int otwórz nawias okrągły wartość domyślna 20 zamknij nawias okrągły. Linia 7. parametr podkreślnik 2 minus int otwórz nawias okrągły wartość domyślna 10 zamknij nawias okrągły. Linia 8. zwraca sumę parametrów minus int otwórz nawias okrągły domyślnie 30 zamknij nawias okrągły. Linia 9. apostrof apostrof apostrof. Linia 10. wynik znak równości parametr podkreślnik 1 plus parametr podkreślnik 2. Linia 11. return wynik. Linia 13. zamknij nawias ostrokątny zamknij nawias ostrokątny zamknij nawias ostrokątny nazwa podkreślnik funkcji otwórz nawias okrągły zamknij nawias okrągły. Linia 14. 30. Linia 15. zamknij nawias ostrokątny zamknij nawias ostrokątny zamknij nawias ostrokątny nazwa podkreślnik funkcji otwórz nawias okrągły parametr podkreślnik 1 znak równości 2 przecinek parametr podkreślnik 2 znak równości 3 zamknij nawias okrągły. Linia 16. 5. Linia 17. zamknij nawias ostrokątny zamknij nawias ostrokątny zamknij nawias ostrokątny nazwa podkreślnik funkcji otwórz nawias okrągły 2 przecinek parametr podkreślnik 2 znak równości 4 zamknij nawias okrągły. Linia 18. 6. Linia 19. zamknij nawias ostrokątny zamknij nawias ostrokątny zamknij nawias ostrokątny nazwa podkreślnik funkcji otwórz nawias okrągły parametr podkreślnik 2 znak równości 3 zamknij nawias okrągły. Linia 20. 23. Linia 21. zamknij nawias ostrokątny zamknij nawias ostrokątny zamknij nawias ostrokątny.

W powyższym przykładzie możesz zaobserwować różne sposoby wywoływania funkcji, co w połączeniu z różnymi wartościami domyślnymi parametrów daje różne wyniki.

Ciekawostka

Istnieje wiele wbudowanych funkcji, które pozwolą ci wykonać często powtarzane zadania programistyczne, np. czytanie/zapisywanie plików. To wszystko, aby szybciej pisać bardziej skomplikowane programy.

Aby utworzyć nazwaną funkcję z własnym kodem, zastosuj słowo def – skrót od słowa „definiuj”.

Zapamiętaj kilka ciekawych cech funkcji w Python:

  • można ustalać wartości domyślne wybranych argumentów,

  • można wywoływać funkcję z użyciem nazw argumentów w dowolnej kolejności,

  • jeśli funkcja nie zwraca jawnie żadnej wartości, wówczas zwraca typ None.

Ciekawostka

Pythonie – w przeciwieństwie do takich języków jak C++, Java, Pascal – funkcja może być argumentem jakieś funkcji, może być wynikiem (wartością zwracaną) funkcji, można ją podstawiać pod zmienne itp.

Definiujemy własną funkcję

W tym ćwiczeniu zdefiniujesz własną funkcję, która na podstawie dwóch wartości (bieżącego roku i roku urodzenia) będzie obliczała wiek osoby. Aby ta funkcja była dostępna dla każdego, opiszesz jej sposób wykonywania (docstring).

Linia 1. def wylicz podkreślnik wiek otwórz nawias okrągły rok podkreślnik aktualny przecinek rok podkreślnik urodzenia zamknij nawias okrągły dwukropek. Linia 2. apostrof apostrof apostrof. Linia 3. rok podkreślnik aktualny np kropka 2019 minus int. Linia 4. rok podkreślnik urodzenia np kropka 1974 minus int. Linia 5. funkcja zwraca wyliczony wiek minus int. Linia 6. apostrof apostrof apostrof. Linia 7. wyliczony podkreślnik wiek znak równości rok podkreślnik aktualny minus rok podkreślnik urodzenia. Linia 8. return wyliczony podkreślnik wiek.
Rlg9DAKUpNmTg

Zwróć uwagę na kolejne elementy, które musisz zastosować:

  • słowo kluczowe def,

  • nazwę funkcji,

  • parametry funkcji,

  • opis funkcji – docstring,

  • obliczenie wieku przez zastosowanie zmiennej wewnątrz funkcji i operatora odejmowania,

  • słowo kluczowe return.

Ważne!

Jeżeli przy słowie kluczowym return nie stoi żadne wyrażenie inne niż None lub funkcja nie zawiera słowa kluczowego return, to w języku Python funkcja zawsze zwraca wartość None.

Ćwiczenie 1

W środowisku IDE stwórz definicję funkcji, ktora będzie mnożyć dwa parametry, a następnie spróbuj ją wywołać dla różnych danych wejściowych, aby uzyskać różne wyniki.

Funkcja print()

Polecenie 1

W środowisku Python 3 użyj funkcji print() jak we fragmencie kodu poniżej. Zauważ, że system operacyjny nie ma tu większego znaczenia.

Linia 1. Python 3 kropka 6 kropka 7 otwórz nawias okrągły default przecinek Oct 22 2018 przecinek 11 dwukropek 32 dwukropek 17 zamknij nawias okrągły. Linia 2. otwórz nawias kwadratowy GCC 8 kropka 2 kropka 0 zamknij nawias kwadratowy on linux. Linia 3. Type cudzysłów help cudzysłów przecinek cudzysłów copyright cudzysłów przecinek cudzysłów credits cudzysłów or cudzysłów license otwórz nawias okrągły zamknij nawias okrągły cudzysłów for more information kropka. Linia 4. zamknij nawias ostrokątny zamknij nawias ostrokątny zamknij nawias ostrokątny print otwórz nawias okrągły apostrof To jest podstawowa funkcja minus wypisuje na ekran apostrof zamknij nawias okrągły. Linia 5. To jest podstawowa funkcja minus wypisuje na ekran. Linia 6. zamknij nawias ostrokątny zamknij nawias ostrokątny zamknij nawias ostrokątny.
R1Yzv2TwZUoOv
Ćwiczenie 2
Połącz w pary odpowiednie treści. Funkcja w Python 3 a w Python 2 Możliwe odpowiedzi: 1. różni się – w Python 2 jest poleceniem, a nie funkcją., 2. może przyjąć kilka argumentów/parametrów., 3. działa tak samo w Windows i w Linuksie. Funkcja print w języku Python 3 Możliwe odpowiedzi: 1. różni się – w Python 2 jest poleceniem, a nie funkcją., 2. może przyjąć kilka argumentów/parametrów., 3. działa tak samo w Windows i w Linuksie. Funkcja w Pythonie Możliwe odpowiedzi: 1. różni się – w Python 2 jest poleceniem, a nie funkcją., 2. może przyjąć kilka argumentów/parametrów., 3. działa tak samo w Windows i w Linuksie.
Ważne!

Przyjrzyj się dokładnie utworzonej funkcji print() i jej parametrowi.

Oto funkcja print i jej parametry.

Linia 1. print otwórz nawias okrągły apostrof To jest podstawowa funkcja minus wypisuje na ekran apostrof zamknij nawias okrągły.

print – nazwa funkcji; w języku angielskim oznacza „drukuj”, więc drukuje/wypisuje informacje tekstowe na ekranie, ale nie tylko na ekranie;

'To jest podstawowa funkcja - wypisuje na ekran' – argument, w postaci ciągu znaków, przekazywany do funkcji. Podprogramy mogą przyjmować różne parametry. Do funkcji print również można przekazać ich więcej. Aby dowiedzieć się więcej na temat możliwych operacji, warto zajrzeć do dokumentacji.

Ciekawostka

Oto przykład oryginalnej dokumentacji do funkcji print():

print(*objects, sep=' ', end='\\n', file=sys.stdout, flush=False)

Print objects to the text stream file, separated by sep and followed by end. sep, end, file and flush, if present, must be given as keyword arguments. All non‑keyword arguments are converted to strings like str() does and written to the stream, separated by sep and followed by end. Both sep and end must be strings; they can also be None, which means to use the default values. If no objects are given, print() will just write end. The file argument must be an object with a write(string) method; if it is not present or None, sys.stdout will be used. Since printed arguments are converted to text strings, print() cannot be used with binary mode file objects. For these, use file.write(...) instead. Whether output is buffered is usually determined by file, but if the flush keyword argument is true, the stream is forcibly flushed.

Changed in version 3.3: Added the flush keyword argument.

Ćwiczenie 3

Napisz funkcję z przypisaniem wyniku do zmiennej, a następnie wydrukuj ją na ekranie, korzystając z funkcji print.

RPPsZelhXunUA

Funkcja zwracająca więcej niż jeden parametr

W języku Python funkcja może zwrócić więcej niż jedną wartość. Zastanów się, jak zapisać funkcję, która na podstawie roku urodzenia oblicza wiek osoby i od razu sprawdza, czy to osoba pełnoletnia. Funkcja ta ma zwrócić obie te informacje. Zapisujesz to w następujący sposób:

Linia 1. return wartosc podkreślnik 1 przecinek wartosc podkreślnik 2.

Przeanalizuj taki kod funkcji:

Linia 1. def jaki podkreślnik wiek otwórz nawias okrągły rok podkreślnik urodzenia przecinek aktualny podkreślnik rok znak równości 2019 zamknij nawias okrągły dwukropek. Linia 2. apostrof apostrof apostrof. Linia 3. funkcja zwraca wiek w latach minus int. Linia 4. oraz informację czy osoba jest pełnoletnia minus bool. Linia 5. apostrof apostrof apostrof. Linia 7. wiek znak równości aktualny podkreślnik rok minus rok podkreślnik urodzenia. Linia 9. if wiek zamknij nawias ostrokątny 17 dwukropek. Linia 10. dorosla znak równości True. Linia 11. else dwukropek. Linia 12. dorosla znak równości False. Linia 14. return wiek przecinek dorosla.

W ten sposób możesz sprawić, że funkcja będzie bardziej przydatna, gdy zrobi kilka rzeczy, a ty tylko poznasz wyniki. To naprawdę bardzo ciekawy sposób programowania. Musisz tylko pamiętać, aby w wywołaniu takiej funkcji odpowiednio odebrać te dane.

Linia 1. Python 3 kropka 6 kropka 7 otwórz nawias okrągły default przecinek Oct 22 2018 przecinek 11 dwukropek 32 dwukropek 17 zamknij nawias okrągły. Linia 2. otwórz nawias kwadratowy GCC 8 kropka 2 kropka 0 zamknij nawias kwadratowy on linux. Linia 3. Type cudzysłów help cudzysłów przecinek cudzysłów copyright cudzysłów przecinek cudzysłów credits cudzysłów or cudzysłów license otwórz nawias okrągły zamknij nawias okrągły cudzysłów for more information kropka. Linia 4. zamknij nawias ostrokątny zamknij nawias ostrokątny zamknij nawias ostrokątny def jaki podkreślnik wiek otwórz nawias okrągły rok podkreślnik urodzenia przecinek aktualny podkreślnik rok znak równości 2019 zamknij nawias okrągły dwukropek. Linia 5. apostrof apostrof apostrof. Linia 6. funkcja zwraca wiek w latach minus int. Linia 7. oraz informację czy osoba jest pełnoletnia minus bool. Linia 8. apostrof apostrof apostrof. Linia 9. wiek znak równości aktualny podkreślnik rok minus rok podkreślnik urodzenia. Linia 10. if wiek zamknij nawias ostrokątny 17 dwukropek. Linia 11. dorosla znak równości True. Linia 12. else dwukropek. Linia 13. dorosla znak równości False. Linia 14. return wiek przecinek dorosla. Linia 16. zamknij nawias ostrokątny zamknij nawias ostrokątny zamknij nawias ostrokątny jaki podkreślnik wiek otwórz nawias okrągły 1974 zamknij nawias okrągły. Linia 17. otwórz nawias okrągły 45 przecinek True zamknij nawias okrągły. Linia 18. zamknij nawias ostrokątny zamknij nawias ostrokątny zamknij nawias ostrokątny jaki podkreślnik wiek otwórz nawias okrągły 1974 przecinek 2019 zamknij nawias okrągły. Linia 19. otwórz nawias okrągły 45 przecinek True zamknij nawias okrągły. Linia 20. zamknij nawias ostrokątny zamknij nawias ostrokątny zamknij nawias ostrokątny a przecinek b znak równości jaki podkreślnik wiek otwórz nawias okrągły 1974 przecinek 2019 zamknij nawias okrągły. Linia 21. zamknij nawias ostrokątny zamknij nawias ostrokątny zamknij nawias ostrokątny a. Linia 22. 45. Linia 23. zamknij nawias ostrokątny zamknij nawias ostrokątny zamknij nawias ostrokątny b. Linia 24. True. Linia 25. zamknij nawias ostrokątny zamknij nawias ostrokątny zamknij nawias ostrokątny.
Ważne!

Zwróć uwagę, że w linii, w której przypisujesz wynik funkcji do zmiennych a i b, używasz przecinka między tymi zmiennymi. Tyle, ile wartości zwraca funkcja, tyle musisz zarezerwować zmiennych odbierających.

Słownik

funkcja
funkcja

wydzielona część kodu, nazywana także podprogramem, wykonująca określone operacje, możliwa do wywołania wiele razy podczas działania programu

parametr
parametr

umożliwia przekazanie argumentów, czyli danych wejściowych, do funkcji. W większości języków programowania wartości parametrów definiuje się podczas procesu deklaracji podprogramu