Zanurkuj w Pythonie/Wcięcia kodu

Z Wikibooks, biblioteki wolnych podręczników.

[edytuj] Wcięcia kodu

Funkcje w Pythonie nie posiadają sprecyzowanych początków i końców oraz żadnych nawiasów służących do zaznaczania, gdzie funkcja się zaczyna, a gdzie kończy. Jedynym separatorem jest dwukropek (:) i wcięcia kodu.

Przykład. Wcięcia w funkcji buildConnectionString
def buildConnectionString(params):
    u"""Tworzy łańcuch znaków na podstawie słownika parametrów.
    
    Zwraca łańcuch znaków.
    """
    return ";".join(["%s=%s" % (k, v) for k, v in params.items()])
 

Bloki kodu definiujemy poprzez wcięcia. Przez "blok kodu" rozumiemy funkcje, instrukcje if, pętle for i while i tak dalej. Wstawiając wcięcie zaczynamy blok, a kończymy go przestając wstawiać wcięcia danej wielkości. Nie ma żadnych nawiasów, klamer czy słów kluczowych. Oznacza to, że białe znaki (spacje itp.) mają znaczenie i ich stosowanie musi być konsekwentne. W powyższym przykładzie kod funkcji (włączając w to notkę dokumentacyjną) został wcięty czterema spacjami. Nie musimy stosować konkretnie czterech spacji, jednak musimy być konsekwentni (tzn. jeśli pierwsze wcięcie w funkcji miało 3 spacje, to kolejne wcięcia także muszą mieć 3 spacje). Linia bez wcięcia znajdować się będzie poza funkcją.

Przykład. Fragment kodu z wcięciem po instrukcji if
def fib(n):                     #(1)
    print 'n =', n              #(2)
    if n > 1:                   #(3)
        return n * fib(n - 1)
    else:                       #(4)
        print 'koniec'
        return 1
  1. Powyższa funkcja, nazwana fib przyjmuje jeden argument: n. Cały kod wewnątrz funkcji jest wcięty.
  2. Wypisywanie danych (na standardowe wyjście) jest bardzo proste, wystarczy użyć słowa kluczowego print. Wyrażenie print może przyjąć każdy typ danych, na przykład łańcuchy znaków, liczby całkowite i inne wbudowane typy danych jak słowniki i listy, o których dowiemy się w następnym rozdziale. Możemy nawet drukować na ekran różne wartości w jednej linii. W tym celu podajemy ciąg wartości, które chcemy wyświetlić, oddzielając je przecinkiem. Każda wartość jest wtedy wyświetlana w tej samej linii i oddzielona spacją (znak przecinka nie jest drukowany). Tak więc, kiedy funkcję fib wywołamy z argumentem 5, na ekranie zobaczymy "n = 5".
  3. Do bloku kodu zaliczamy także instrukcje if. Jeżeli wyrażenie za instrukcją if będzie prawdziwe, to zostanie wykonany wcięty kod znajdujący się zaraz pod instrukcją if. W przeciwnym wypadku wykonywany jest blok else.
  4. Oczywiście bloki if oraz else mogą składać się z większej ilości linii, o ile linie te mają wcięcia z równą ilością spacji. Tutaj blok else ma dwie linie. Python nie wymaga żadnej specjalnej składni dla bloków składających się z wielu linii. Po prostu robimy wcięcia o równej liczbie spacji.


Po początkowych problemach i nietrafionych porównaniach do Fortranu, pogodzisz się z tym i zobaczysz pozytywne cechy wcięć. Jedną z głównych zalet jest to, że wszystkie programy w Pythonie wyglądają podobnie, ponieważ wcięcia kodu są wymagane przez sam język i nie zależą od stylu pisania. Dzięki temu jakikolwiek kod jest prostszy do czytania i zrozumienia.

Porada Python używa znaku powrotu karetki (ang. carriage return), czyli znaku końca linii, by oddzielić instrukcje. Natomiast dwukropek i wcięcia służą, aby oddzielić bloki kodu. C++ oraz Java używają średników do oddzielania instrukcji, a klamry do separacji bloków kodu.


[edytuj] Materiały dodatkowe