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.
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ą.
if
def fib(n): #(1)
print 'n =', n #(2)
if n > 1: #(3)
return n * fib(n - 1)
else: #(4)
print 'koniec'
return 1
- Powyższa funkcja, nazwana
fibprzyjmuje jeden argument:n. Cały kod wewnątrz funkcji jest wcięty. - Wypisywanie danych (na standardowe wyjście) jest bardzo proste, wystarczy użyć słowa kluczowego
print. Wyrażenieprintmoż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ęfibwywołamy z argumentem5, na ekranie zobaczymy "n = 5". - Do bloku kodu zaliczamy także instrukcje
if. Jeżeli wyrażenie za instrukcjąifbędzie prawdziwe, to zostanie wykonany wcięty kod znajdujący się zaraz pod instrukcjąif. W przeciwnym wypadku wykonywany jest blokelse. - Oczywiście bloki
iforazelsemogą składać się z większej ilości linii, o ile linie te mają wcięcia z równą ilością spacji. Tutaj blokelsema 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.
[edytuj] Materiały dodatkowe
- Python Reference Manual omawia niektóre problemy związane z wcięciami kodu.
- Python Style Guide mówi na temat dobrego stylu tworzenia wcięć.

