2024-08-20

Myśląc o Pythonie: return

I oto jesteśmy, docieramy wreszcie do kwestii kluczowej, na którą wyczekiwali wszyscy. Oto na scenę wchodzi wartość zwracana z funkcji, czyli return. Sporo czasu antenowego poszło dla wszelkich argumentów - tego co mamy na wejściu w funkcji. Funkcja potrzebuje też pewnej wartości na wyjściu.

Można bowiem powiedzieć, że funkcja pewne wartości przyjmuje, robi na nich jakąś magię, a później je zwraca. Dotychczas 'zwracanie' to odbywało się za pomocą printów. Po wykonaniu funkcji, widzieliśmy więc na ekranie rezultat jej działania. W praktyce jednak rzadko się tak robi. Częściej używa się słowa kluczowego return.

Dlaczego akurat tak? Jest to spowodowane prostą rzeczą, jeśli wyświetlamy od razu w funkcji wrtość jej obliczeń to nic z tym nie możemy dalej zrobić, po prostu wyświetlamy na ekran. Natomiast jeśli wartość zwrócimy używając słowa kluczowego return, to wtedy będziemy mogli zdecydować co dalej robimy z tą wartością.

Zwracanie wartości

Przy zwróceniu wartości z funkcji, możemy zadecydować czy wykorzystać ją w innej funkcji, zapisać do zmiennej, może od razu wyświetlić (czyli użyć bezpośrednio w funkcji print). Mamy dużo więcej możliwości, jest to więc metoda bardziej uniwersalna, a w programowaniu takie lubimy 🙂

W praktyce, program jest takim jakby szeregiem funkcji, przez które przechodzą Nasze wartości i są podawane z jednej do drugiej, są zwracane. Na wyjściu więc mamy pewien obiekt, z którym możemy zrobić co Nam się podoba. Zobaczmy sobie prosty przykład użycia funkcji return.

deklaracja funkcji z return, wartością zwracaną

No dobrze, zadeklarowaliśmy Nasza funkcję, użyliśmy return do zwrócenia wartości.... ale nic się nie stało. Czy wiesz już jaki jest tego powód?

Tak, to podchwytliwe, nie wywołaliśmy Naszej funkcji o nazwie fn do działania, więc po prostu istnieje ona w pamięci, ale nic nie robi.

deklaracja funkcji z return i wywołanie

No i super, funkcja wywołana, wszystko pięknie jak się uczyliśmy, ale nic nie widać. Funkcja miała coś zwrócić, a tu nic.... z printem to przynajmniej widzieliśmy coś na ekranie. Wiesz o co może chodzić?

Zamiast printa

No i tak, print był fajny, bo od razu wyświetlał na ekran, a tutaj słowo return po prostu zwraca wartość z funkcji. My nic nie robimy z tą wartością, więc funkcja ją zwraca i program się kończy. Jak wspominałem możemy użyć wartości zwracanej bezpośrednio w funkcji by np. wyświetlić ją na ekran.

deklaracja funkcji z return i wywołanie jej wewnątrz innej.

No i tutaj już coś widzimy, a to dlatego, że użyliśmy zwracanej wartości jako argumentu funkcji print. Jak to dokładnie się stało? Funkcja bowiem wartość zwraca, w miejscu wywołania, czyli jakby 'wywołanie funkcji ma wartość tego co owa funkcja zwróci'. Z tego można wywnioskować, że możemy użyć wywołania funkcji jako wartości, przykładowo w innej funkcji.

Kończ waść

I właśnie taka magia jest tutaj odprawiana, użyliśmy jednej funkcji jako argumentu innej. Jako, iż pierwsza z nich zwraca wartość, to właśnie ta wartość jest stosowana jako argument przez drugą. Po prostu Nasze funkcje podają sobie wartość zwracaną, jedna ją tworzy i daje drugiej do operowania na niej. Oczywiście możemy wartość zwracaną także zapisać w zmiennej, domyślasz się jak?

deklaracja funkcji wartością zwracaną za pomocą return i zapisaniem tej wartości w zmiennej

Możemy to zrobić jak powyżej, po prostu zapisując wartość wywołania funkcji do zmiennej, a później używamy już tej zmiennej.

Rozbijając jeszcze raz zwracanie wartości na czynniki pierwsze. Używamy po prostu słówka kluczowego return, a po nim podajemy wartość jaką chcemy zwrócić, może to być działanie. Działanie bowiem po prostu zostanie wykonane, a jego wartość będzie użyta razem z return.

Przy okazji, return pełni jeszcze jedną bardzo ważną rolę, kończy funkcję. Mówi on bowiem coś w stylu 'tutaj zwróć wartość i zakończ funkcję, powracając do miejsca wywołania'. Zatem żadna instrukcja umieszczona po słowie return nie wykona się. Funkcja obwieściła już wszem i wobec, że zrobiła swoje i oddaje kontrolę do miejsca wywołania.

Nie wierzysz? Sprawdź to sam, jako zadanie domowe napisz kilka funkcji, niech każda używa wartości zwróconej z poprzedniej, ale bez zapisywania tej wartości do zmiennej. Jedna z funkcji niech coś wyświetla po słowie return.

Warto na koniec dodać, że można zwrócić też przykładowo tuple, która jest jak pamiętasz elementami po przecinku, zastanów się więc jak za pomocą return możesz zwrócić tuple z funkcji 😉

2 comments on “Myśląc o Pythonie: return”

  1. […] Rozwiązaniem takiego problemu jest tak zwany zasięg lokalny. Jest to po prostu przykładowo sytuacji, gdy zmienną deklarujemy bezpośrednio w funkcji i istnieje tylko w czasie jej trwania. Znaczy to tyle, że uruchamiając daną funkcję, która deklaruje zmienną, po zakończeniu jej działania, zmienna wraz z innymi wynikami działania funkcji, zostaje usunięta. Możemy oczywiście zapisać wynik tej funkcji do jakiejś innej zmiennej, używając m.in. wspomnianego returna. […]

Dodaj komentarz

linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram