Funkcje Pythona
Funkcja to blok kodu, który działa tylko wtedy, gdy jest wywoływana.
Do funkcji można przekazać dane, zwane parametrami.
W rezultacie funkcja może zwrócić dane.
Tworzenie funkcji
W Pythonie funkcję definiuje się za pomocą słowa kluczowego def :
Przykład
def my_function():
print("Hello from a function")
Wywołanie funkcji
Aby wywołać funkcję, użyj nazwy funkcji, po której następuje nawias:
Przykład
def my_function():
print("Hello from a function")
my_function()
Argumenty
Informacje mogą być przekazywane do funkcji jako argumenty.
Argumenty są podane po nazwie funkcji, w nawiasach. Możesz dodać dowolną liczbę argumentów, po prostu oddziel je przecinkiem.
Poniższy przykład ma funkcję z jednym argumentem (fname). Gdy funkcja jest wywoływana, przekazujemy imię, które jest używane wewnątrz funkcji do wypisania pełnego imienia i nazwiska:
Przykład
def my_function(fname):
print(fname + " Refsnes")
my_function("Emil")
my_function("Tobias")
my_function("Linus")
W dokumentacji Pythona argumenty są często skracane do args .
Parametry czy argumenty?
Parametru i argumentu term można używać do tego samego: informacji przekazywanych do funkcji.
Z perspektywy funkcji:
Parametr to zmienna wymieniona w nawiasach w definicji funkcji.
Argument to wartość, która jest wysyłana do funkcji podczas jej wywołania.
Liczba argumentów
Domyślnie funkcja musi być wywołana z odpowiednią liczbą argumentów. Oznacza to, że jeśli twoja funkcja oczekuje 2 argumentów, musisz wywołać funkcję z 2 argumentami, nie więcej i nie mniej.
Przykład
Ta funkcja oczekuje 2 argumentów i otrzymuje 2 argumenty:
def my_function(fname, lname):
print(fname + " " + lname)
my_function("Emil", "Refsnes")
Przykład
Ta funkcja oczekuje 2 argumentów, ale otrzymuje tylko 1:
def my_function(fname, lname):
print(fname + " " + lname)
my_function("Emil")
Argumenty arbitralne, *args
Jeśli nie wiesz, ile argumentów zostanie przekazanych do Twojej funkcji, dodaj a *
przed nazwą parametru w definicji funkcji.
W ten sposób funkcja otrzyma krotkę argumentów i będzie mogła odpowiednio uzyskać dostęp do elementów:
Przykład
Jeśli liczba argumentów jest nieznana, dodaj a *
przed nazwą parametru:
def my_function(*kids):
print("The youngest child
is " + kids[2])
my_function("Emil", "Tobias", "Linus")
Argumenty arbitralne są często skrócone do *args w dokumentacji Pythona.
Argumenty słów kluczowych
Możesz również wysyłać argumenty za pomocą składni klucz = wartość .
W ten sposób kolejność argumentów nie ma znaczenia.
Przykład
def my_function(child3, child2, child1):
print("The youngest child
is " + child3)
my_function(child1 = "Emil", child2 = "Tobias", child3 = "Linus")
Fraza Keyword Arguments jest często skracana do kwargs w dokumentacji Pythona.
Arbitralne argumenty słów kluczowych, **kwargs
Jeśli nie wiesz, ile argumentów słów kluczowych zostanie przekazanych do Twojej funkcji, dodaj dwie gwiazdki: **
przed nazwą parametru w definicji funkcji.
W ten sposób funkcja otrzyma słownik argumentów i będzie mógł odpowiednio uzyskać dostęp do elementów:
Przykład
Jeśli liczba argumentów słów kluczowych jest nieznana, dodaj double
**
przed nazwą parametru:
def my_function(**kid):
print("His last name is " + kid["lname"])
my_function(fname = "Tobias", lname = "Refsnes")
Arbitralne argumenty Kword są często skracane do **kwargs w dokumentacji Pythona.
Domyślna wartość parametru
Poniższy przykład pokazuje, jak używać domyślnej wartości parametru.
Jeśli wywołamy funkcję bez argumentu, użyje ona wartości domyślnej:
Przykład
def my_function(country = "Norway"):
print("I am from " +
country)
my_function("Sweden")
my_function("India")
my_function()
my_function("Brazil")
Przekazywanie listy jako argumentu
Możesz wysłać dowolne typy danych jako argument do funkcji (łańcuch, liczba, lista, słownik itp.) i będą one traktowane jako ten sam typ danych wewnątrz funkcji.
Np. jeśli wyślesz Listę jako argument, nadal będzie to List, gdy dotrze do funkcji:
Przykład
def my_function(food):
for x in food:
print(x)
fruits = ["apple", "banana", "cherry"]
my_function(fruits)
Zwracane wartości
Aby funkcja zwróciła wartość, użyj return
instrukcji:
Przykład
def my_function(x):
return 5 * x
print(my_function(3))
print(my_function(5))
print(my_function(9))
Oświadczenie o przepustce
function
definicje nie mogą być puste, ale jeśli z jakiegoś powodu masz function
definicję bez treści, umieść ją w pass
oświadczeniu, aby uniknąć błędu.
Przykład
def myfunction():
pass
Rekurencja
Python akceptuje również rekurencję funkcji, co oznacza, że zdefiniowana funkcja może wywołać samą siebie.
Rekurencja jest powszechną koncepcją matematyczną i programistyczną. Oznacza to, że funkcja wywołuje samą siebie. Ma to tę zaletę, że możesz zapętlić dane, aby osiągnąć wynik.
Deweloper powinien być bardzo ostrożny z rekurencją, ponieważ może być dość łatwo wślizgnąć się do napisania funkcji, która nigdy się nie kończy, lub takiej, która używa nadmiernej ilości pamięci lub mocy procesora. Jednak poprawnie napisana rekurencja może być bardzo wydajnym i matematycznie eleganckim podejściem do programowania.
W tym przykładzie tri_recursion() jest funkcją, którą zdefiniowaliśmy tak, aby wywoływała samą siebie ("recurse"). Używamy zmiennej k jako danych, która zmniejsza się ( -1 ) za każdym razem, gdy wykonujemy rekurencję. Rekurencja kończy się, gdy warunek nie jest większy niż 0 (tj. gdy wynosi 0).
Nowemu programiście może zająć trochę czasu, aby dowiedzieć się, jak dokładnie to działa, najlepszym sposobem jest przetestowanie i zmodyfikowanie go.
Przykład
Przykład rekurencji
def tri_recursion(k):
if(k > 0):
result = k + tri_recursion(k - 1)
print(result)
else:
result = 0
return result
print("\n\nRecursion Example Results")
tri_recursion(6)