Funkcja jest nazwanym blokiem poleceń. Funkcjom możemy przekazywać argumenty.
Definicja funkcji
Python oferuje całą gamę funkcji wbudowanych, czyli takich, które zostały już przygotowane przez twórców języka. Przykładem jest funkcja len, która oblicza długość łańcucha znaków.
Własną funkcję definiujemy za pomocą słowa kluczowego def:
def say_hello(name):
print("Hello", name)
W ten sposób zdefiniowaliśmy funkcję say_hello, która ma parametr name. Funkcja może mieć również więcej parametrów.
Wywoływanie funkcji
Samo zdefiniowanie funkcji nie powoduje jej wykonania. Aby funkcja została wykonana, musimy ją wywołać. Robimy to, zapisując nazwę funkcji i przekazując w nawiasach konkretny argument:
say_hello("Alice") # wypisze Hello Alice
say_hello("Bob") # wypisze Hello Bob
Niektóre funkcje nie mają parametrów. Przy ich wywołaniu nadal musimy podać nawiasy, np. say_goodbye().
Wartość zwrotna
Funkcja może zwracać wartość zwrotną za pomocą słowa kluczowego return. Poniższa funkcja oblicza i zwraca silnię.
def factorial(n):
f = 1
for i in range(1, n+1):
f = f*i
return f
Taka funkcja sama w sobie nic nie wykonuje, jedynie zwraca wartość, z którą możemy dalej pracować.
factorial(5) # obliczy wartość silni z 5, ale potem ta
# wartość nie zostanie w żaden sposób użyta
print(factorial(4)) # tym razem wypiszemy wynik obliczeń
x = factorial(6) # wynik obliczeń zostanie zapisany do zmiennej
print(x) # a następnie możemy np. wypisać wartość zmiennej
Instrukcja return kończy wykonywanie funkcji. Zatem przy wywołaniu poniższej funkcji zostanie wypisane tylko foo:
def test():
print("foo")
return 0
print("bar")
Różnice między return a print
Częstym źródłem problemów u początkujących programistów jest prawidłowe użycie print i return w funkcjach.
Użycie print powoduje natychmiastowe wypisanie wartości, jednak nie można z tą wartością dalej pracować.
Użycie return kończy działanie funkcji i zwraca wartość. Nie jest ona automatycznie wypisywana, ale możemy przypisać ją do zmiennej i dalej z nią pracować.