Lekcje modułu (1/4)
def i return
Funkcja to blok kodu wielokrotnego użytku: definiujesz go raz za pomocą def,
a następnie wywołujesz tyle razy, ile chcesz. Funkcje sprawiają, że kod jest modułowy,
testowalny i samodokumentujący się.
Podstawowa składnia
def saluta(nome):
return f"Ciao, {nome}!"
saluta("Ada") # 'Ciao, Ada!'defwprowadza funkcję, po której następuje nazwa i parametry w nawiasach.- Dwukropek
:otwiera wcięty blok. - Instrukcja
returnzwraca wartość do wywołującego i kończy działanie funkcji.
Jawne return vs niejawne None
Jeśli nie napiszesz return, funkcja niejawnie zwróci None:
def stampa_e_basta(x):
print(x)
risultato = stampa_e_basta("ciao")
# prints 'ciao'
print(risultato) # NoneSamo return (bez wartości) również zwraca None, ale może służyć jako wcześniejsze
wyjście z funkcji:
def primo_pari(nums):
for n in nums:
if n % 2 == 0:
return n
return None # explicit: communicates "not found"Wiele wartości? Zwróć krotkę
Python nie ma "parametrów wyjściowych": aby zwrócić więcej niż jedną rzecz, zwróć krotkę (często rozpakowywaną przez wywołującego).
def divisione_resto(a, b):
return a // b, a % b
quoziente, resto = divisione_resto(17, 5)
# 3, 2Docstring: wbudowana dokumentacja
Pierwszy ciąg znaków wewnątrz funkcji to docstring: pojawia się w help(fn)
oraz jako podpowiedź (tooltip) w środowiskach IDE.
def area_cerchio(raggio):
"""Calcola l'area di un cerchio dato il raggio."""
import math
return math.pi * raggio ** 2Zakres (Scope): zmienne lokalne
Zmienne zdefiniowane wewnątrz funkcji są lokalne: nie istnieją poza nią.
def f():
x = 10
return x
f() # 10
x # NameError: name 'x' is not definedFunkcje zawsze coś zwracają
W Pythonie, jeśli funkcja nie deklaruje jawnie instrukcji return lub zawiera puste return, niejawnie zwróci specjalną wartość None. Nie ma funkcji, które nie zwracają wartości.
Spróbuj sam
Zdefiniuj funkcję `double(x)` która zwraca `x * 2`. Następnie wywołaj ją z wartością 7 i przypisz wynik do zmiennej `result`. Oceń `result`.
Pokaż wskazówkę
Użyj return x * 2.
Rozwiązanie dostępne po 3 próbach
Ćwiczenie powtórzeniowe
Zdefiniuj `min_max(nums)` która zwraca krotkę `(minimum, maximum)`. Wywołaj ją na `[3, 1, 4, 1, 5, 9, 2, 6]` i rozpakuj wynik do `mn, mx`. Oceń `(mn, mx)`.
Pokaż wskazówkę
return min(nums), max(nums)
Rozwiązanie dostępne po 3 próbach
Dodatkowe wyzwanie
Zdefiniuj funkcję `is_palindrome(text)` która zwraca `True` jeśli wejściowy ciąg znaków jest równy swojej odwróconej wersji, a `False` w przeciwnym razie. Przetestuj funkcję wywołaniem `is_palindrome("radar")` jako ostatnim wyrażeniem.
Pokaż wskazówkę
Użyj slicingu text[::-1] do odwrócenia ciągu znaków i porównania go z tekstem oryginalnym.
Rozwiązanie dostępne po 3 próbach