admin 0Comment

Jest to pierwszy temat z serii krótszych wpisów dotyczących różnych rozwiązań nakierowanych na szybkie/eleganckie/klarowne pisanie kodu w Pythonie. Wiele kursów, zwłaszcza tych skierowanych do początkujących, nad działania zgodne z dobrymi praktykami programistycznymi przedkłada klarowność kodu i prostotę zastosowanych rozwiązań. Bardzo dobrze, ponieważ kod napisany przez początkującego, stopniem organizacji przypomina ogarnięty pożarem burdel – znam to z własnego doświadczenia 😉

Nic nie stoi na przeszkodzie żebyśmy, nawet ucząc się podstaw, powoli wdrażali rozwiązania, które nie spowodują zgrzytania zębów u bardziej doświadczonych programistów, przeglądających nasz kod. W mojej nauce staram się już by kod nie tylko działał ale także wyglądał – związane jest to ze stopniowym porzucaniem pewnych sposobów i schematów działania na rzecz sensowniejszych. Pomyślałem więc, że warto na blogu umieszczać informacje o takich, często niewielkich, udoskonaleniach, które może stosować każdy z wannabe-deweloperów.

Przykładem postępowania, które przewija się w kursach dla początkujących jest iteracja list (i nie tylko) za pomocą rozwiązania widocznego poniżej:

>>> animals = ['cat', 'bat', 'rat']

>>> for number  in range(len(animals)):

print(number, animals[number])

Efekt  to oczywiście:

0 cat

1 dog

2 cow

Dla celów edukacji jest to najlepsze rozwiązanie – funkcje range() oraz len() należą do tych, które pojawiają się na początkowym etapie nauczania a takie ich zastosowanie pozwala przedstawić tok działania – jest to nic innego jak najpierw policzenie jaką długość (to jest, ile elementów) posiada dany zbiór a potem zastosowanie działania w zakresie (range) tej liczby. Czyli, skoro mamy trzy elementy w liście animals to:

>>>> for number  in range(len(animals)):

Sprowadza się do tego:

>>> for number in range(3):

A dalej odnosimy się do indeksu konkretnego elementu w liście, poprzez stosowanie tej samej zmiennej number. W praktyce programistycznej warto jednak unikać tego rozwiązania, a zamiast niego możemy zastosować takie:

>>> for number, animal in enumerate(animals):

print(number, animal)

Widoczny efekt  jest ten sam:

0 cat

1 dog

2 cow

Jest to oczywiście detal, ale myślę, że może się przydać każdemu początkującemu jeśli chodzi o naukę programowania w języku Python. Oczywiście jeżeli masz jakikolwiek sensowny powód by stosować sposób wykorzystujący range() wraz z len() – jak najbardziej, zrób to. Zawsze jednak warto znać więcej niż jedno rozwiązanie danego problemu.

Dodaj komentarz