Python_Notatki Z10

Python_Notatki Z10
Photo by Adrian Curiel / Unsplash

# def kwadrat(x):
#     wynik = x*x
#     return wynik

def kwadrat(x):
    return x*x

def szescian(x):
    wynik = x*x*x
    return wynik

podniesione_do_kwadratu = kwadrat(3)
print(podniesione_do_kwadratu)

do_szescianu = szescian(3)
print(do_szescianu)

Funkcja print nic nie zwraca, niektóre inne też.

return nie zawsze musi być w funkcji.

UWAŻAJ na takie pomyłki — niepodawanie typu parametrów i typu return funkcji!!!

Trzeba podawać typ parametru, np. int, float, bool i td.

Jeżeli podać typ to vs code podpowiada od razu i podkreśla pomyłki. To też ułatwia pracę współpracownikom i sobie przyszłemu.

Dobrze podawać jaki typ funkcja zwróci:

Jeżeli funkcja nic nie zwraca — to -> None

Książka Kontaktowa, wersja jednej ze studentek:

Można zaznaczone fragmenty kodu zamienić w funkcje.

Dobrze jeżeli funkcja zajmuje się 1 rzeczą, a nie wieloma rzeczami naraz! Ale to niesztywna zasada.

REKURENCJA!!!! Można użyć samej funkcji w funkcji.

Rekurencja

moje_liczby = []

def counter(end:int, start:int = 0, step:int=1):
    if start > end:
        return
    moje_liczby.append(start)
    counter(end, start + step, step)
    
counter(end=10, step=1)
print(moje_liczby)

Można zaimportować sobie funkcje z pliku do innego pliku

from recursive_counter import counter — i potem można korzystać z funkcji counter.

Kod zrobi się jeszcze bardziej modularny przez tworzenie klas. Mniej pomyłek.

Specjalna funkcja _ _ init _ _ w klasie — magiczna funkcja odpowiada za przypisanie do konkretnego obiektu z klasy charakterystycznych cech.

Dalej deklarujemy metody wbudowane w klasę:

Pojawia się self — oznacza, że odwołujemy się do indywidualnych cech obiektu

Jeżeli bez self wpisać, to wszystkie koty są rude, czyli to jest dla wszystkich obiektów klasy

Zawsze nazywa się init!!!! Nie można tego zmienić tu

def init to tak zwany konstruktor, to co tworzy nam obiekt, ale nie do końca

Konstruktor to jest funkcja wywoływana, zanim obiekt jest stworzony. Tu init wywoływany już po stworzeniu obiektu, ale funkcjonalność jest zbliżona.

Dobra praktyka – przekazywać tak:

Do atrybutów nie ma nawiasów okrągłych na końcu po nazwie atrybutu.

Do funkcji (metod) koniecznie nawiasy, żeby uruchomić.

Dobudowujemy funkcjonalność do klasy!

Funkcje — global

W poprzednim drukuje się najpierw 22 potem 12, bez global

Można dodać klasę optional — opcjonalne atrybuty

DZIEDZICZENIE!!!!!!!!

Tak się zapisuje dziedziczenie. Klasa Mag dziedziczy PostacGracza

NIE robić lepiej dziedziczenia od dziedziczenia od dziedziczenia...

Rekomendacja: jeżeli coś można napisać bez dziedziczenia to lepiej tak zrobić

Nie profesja rozszerza gracza, tylko lepiej zrobić ze gracz ma profesje)

potem:

self.profesja = Mag

Nie robić wielokrotnego dziedziczenia!!!

Dla mocnych w programowaniu książka:

Na ostatnich zajęciach przypomnieć, żeby opowiedział, jak zapakować apki do pliku exec.