Zanurkuj w Pythonie/Wcięcia kodu
Wcięcia kodu
edytujFunkcje 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 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ą.
if
def silnia(n): #(1)
print ('n =', n) #(2)
if n > 1: #(3)
return n * silnia(n - 1)
else: #(4)
print ('koniec')
return 1
- Powyższa funkcja, nazwana
silnia
przyjmuje 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żenieprint()
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 argumentem5
, na ekranie zobaczymy "n = 5". - 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 blokelse
. - Oczywiście bloki
if
orazelse
mogą składać się z większej ilości linii, o ile linie te mają wcięcia z równą ilością spacji. Tutaj blokelse
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.
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 czy PHP używają średników do oddzielania instrukcji, a klamry do separacji bloków kodu. |
Materiały dodatkowe
edytuj- Python Reference Manual omawia niektóre problemy związane z wcięciami kodu.