Zanurkuj w Pythonie/Wcięcia kodu

Z Wikibooks, biblioteki wolnych podręczników.

Wcięcia kodu[edytuj]

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 zmniejszając wielkość wcięcia do poprzedniej wartoś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 trzy spacje, to kolejne wcięcia także muszą mieć trzy spacje). Linia bez wcięcia znajdować się będzie poza funkcją.

Przykład. Fragment kodu z wcięciem po instrukcji if
 def silnia(n):                  #(1)
     print ('n =', n)            #(2)
     if n > 1:                   #(3)
         return n * silnia(n - 1)
     else:                       #(4)
         print ('koniec')
         return 1
  1. Powyższa funkcja, nazwana silnia 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ę silnia 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 początkowych problemach i nietrafionych porównaniach do Fortrana, 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.

Materiały dodatkowe[edytuj]