(Py) Python Funkcje*

Python Funkcje

Wstęp teoretyczny

  • Funkcja umożliwia grupowanie zbioru instrukcji, tak aby mogły być one wielokrotnie wykorzystywane. Funkcja może pobierać dane wejściowe w postaci argumentów (Arguments), a następnie zwrócić wartość wyniku (Return).
  • Podstawowym celem funkcji w Python-ie jest:
    • Maksymalizowanie możliwości ponownego wykorzystania kodu.
    • Minimalizowanie powtórzeń kodu.
  • Python jest językiem silnie uzależnionym od typów obiektów (Polimorfizm), tym samym operacja wykonywana na obiektach jest zależna od od typu podanych obiektów. Przykładowo operacja mnożenia (*) wykonana na dwóch liczbach zwróci ich iloczyn, natomiast ta sama operacja wykonana na ciągu znaków i liczbie, zwróci określoną wielokrotność ciągu znaków.

Przestrzeń nazw

  • Przestrzeń nazw określa zakres widoczności zmiennej w pisanym kodzie. Zmienne można przypisać w trzech następujących miejscach:
    • Wewnątrz instrukcji (def) staje się Zmienną lokalna.
    • Wewnątrz instrukcji (def) względem innej funkcji zagnieżdżonej, staje się Zmienną Nielokalną.
    • Poza wszystkimi funkcjami staje się Zmienną Globalną (Zmienna globalna rozciąga się na jeden plik).
  • Reguła LEGB ma na celu rozwiązanie konfliktów w zakresie nazw.
    • Przestrzeń nazw jest przeszukiwana zgodnie z następującą kolejnością:
      1. Zakres lokalny.
      2. Zakres lokalny Funkcji zagnieżdżonej.
      3. Zakres globalny.
      4. Zakres wbudowany (Np. open, list czy dict) [1].

Zmienne globalne

  • Zmienne globalne są definiowane w najwyższym poziomie pliku modułu.
  • Zmienne globalne muszą być deklarowane jedynie w przypadku ich modyfikowania wewnątrz funkcji.
  • Zmienne globalne nie muszą być deklarowane w przypadku odniesienia się do nich wewnątrz funkcji.
Zmienne globalne:

x = 88

def test():
    print(x) # Odwołanie do zmiennej globalnej nie wymaga jej definiowania wewnątrz funkcji.

def test2(new_x):
    # Wskazuje "zmienną" jako zmienną globalną, domyślne do niej odwołanie bez
    # zastosowania hasła "global" zostanie uznane za odwołanie do zmiennej lokalnej,
    # Która w tym przypadku nie została zdefiniowana.
    global x # odwołanie do zmiennej globalnej.
    x = new_x # Zmiana wartości zmiennej globalnej wewnątrz funkcji, wymaga jej zdefiniowania.
    return x

test()
print(test2(55)) 

# Wydruk: 
88
55

Przekazywanie argumentów

Wywołanie funkcji z argumentami

  • function(wartość_1, wartość_2) – Wywołuje funkcję, przekazując jedną / wiele wartości zgodnie z kolejnością wprowadzenia..
  • function(nazwa=wartość_1, nazwa=wartość_2) – Wywołuje funkcję, przekazując jedną / wiele wartości zgodnie z przypisanymi nazwami odpowiadającymi nazwą zadeklarowanym w definicji funkcji.
  • function(*sekwencja) – Wywołuje funkcję, przekazując sekwencję (Tuples).
  • function(**słownik) – Wywołuje funkcję, przekazując słownik (Dict).

Tworzenie funkcji z argumentami

  • def function(nazwa) – Definiuje funkcję wymagającą podania wskazanych nazw – wartości, przy wywołaniu.
  • def function(*args) – Definiuje funkcję wymagającą podania sekwencji (Tuples), przy wywołaniu.
  • def function(nazwa=wartość_domyślna) – Definiuje funkcję przyjmującą wartości podane przy wywołaniu, bądź przyjmującą domyślne wartości zdefiniowane w definicji funkcji.
  • def function(**kwargs) – Definiuje funkcję wymagającą podania słownika (Dict), przy wywołaniu.

Kolejność argumentów

  1. Zwykły parametr.
  2. Argument Arbitralny (*args).
  3. Argument Domyślny.
  4. Argument Arbitralny (**kwargs).

Definicja / Wywołanie funkcji

Przykładowe wywołanie funkcji test():

zmienna = test # Przypisanie obiektu do funkcji.
zmienna() # Wywołanie funkcji test().

Przykłady

Definicja oraz wywołanie funkcji:

def nazwa_funkcji(parametr_funkcji):
    '''
    Opis funkcji
      Opis działania funkcji
    '''
    print(argument_funkcji)
    
    # Zwraca wskazaną wartość:
    return parametr_funkcji

# Wywołuje funkcję ze wskazanym parametrem:
nazwa_funkcji("argument_funkcji") # Wydrukuje napis argument_funkcji
print(nazwa_funkcji("argument_funkcji")) # Wydrukuje napis argument_funkcji

# Wyświetla opis funkcji:
print(nazwa_funkcji.__doc__)

Pozostałe tematy związane z podstawami Python-a

Funkcje / Object Oriented Programming

Edycja treści


[1] Zakres wbudowany można zaimportować za pomocą następującego kodu [import builtins].

PDFPRINT

Robert T Kucharski

Cisco Network Engineer in GPW.

Dodaj komentarz