Blog IT, Blog Marketing

Podrasuj z nami swój kod w Pythonie

Podrasuj z nami swój kod w Pythonie

Marcin Sarna , 19.03.2021 r.

Jedną z fajnych rzeczy w Pythonie jest to, że łatwo jest sprawić, by wszystko działało. Kolejną fajną rzeczą jest to, że w Pythonie jest wiele sposobów na to aby kod był czystszy i łatwiejszy do napisania. To co, awansujemy się z początkującego na nowicjusza? ;-)

Zastąp range(len()) wyrażeniem enumerate()

Gdy zajdzie potrzeba iteracji po zbiorze i śledzenia indeksu, do którego uzyskujesz dostęp, wiele osób zwraca się do iteracji po range(len(collection)). Tymczasem użycie funkcji enumerate() jest o wiele bardziej eleganckim i czystszym sposobem na zrobienie tego samego.

Funkcja enumerate zwraca obiekt wyliczeniowy, który przechowuje indeks i wartość każdego elementu. Dzięki temu możesz lepiej śledzić, gdzie jesteś w swojej kolekcji, ale także jaką masz obecnie pobraną wartość. Rzućmy okiem na przykład ilustrujący to za pomocą metod range(len(collection))enumerate(collection):

# Define a collection, such as list:
names = ['Nik', 'Jane', 'Katie', 'Jim', 'Luke']

# Using the range(len(collection)) method, you'd write:
for i in range(len(names)):
print(i, names)

# Using enumerate, you can define this by writing:
for idx, name in enumerate(names):
print(idx, name)

# Both ways of doing this return:
# 0 Nik
# 1 Jane
# 2 Katie
# 3 Jim
# 4 Luke

Jeśli chcesz, aby zaczynać gdzieś indziej niż na zerze, możesz po prostu przekazać swoją wartość początkową do parametru start=. Powiedzmy, że chcemy, aby zacząć od 1. Możesz po prostu napisać:

 # Define a collection, such as list:
names = ['Nik', 'Jane', 'Katie', 'Jim', 'Luke']

# Using enumerate, you can define this by writing:
for idx, name in enumerate(names, start=1):
print(idx, name)

# This returns:
# 1 Nik
# 2 Jane
# 3 Katie
# 4 Jim
# 5 Luke

Przestań używać nawiasów kwadratowych, aby uzyskać elementy słownika - użyj .get()

Załóżmy, że masz słownik, który wygląda tak:

nik = {
'age':32,
'gender':'male',
'employed':True,
}

Jeśli chcesz uzyskać wartość dla wieku to możesz być przyzwyczajony do napisania nik['age']. Chociaż działa to w tym przypadku, nie zadziała, gdy wartość nie będzie istniała. Na przykład próba uzyskania dostępu do nieistniejącej wartości „location” spowoduje zgłoszenie błędu KeyError. Jasne, możesz użyć „try” z wyjątkiem, ale po co to robić, skoro możesz zamiast tego użyć metody .get()? Metoda zwróci wtedy po prostu [i]None w przypadku braku klucza i będzie kontynuowała swoje działanie.

nik = {
'age':32,
'gender':'male',
'employed':True,
}

print(nik.get('location'))

# Returns:
# None

Uprość iterację po wielu listach za pomocą Zip()

Może się zdarzyć, że otrzymasz wiele kolekcji (na przykład list) i będziesz musiał iterować po każdej z nich zbiorczo. Możesz to zrobić za pomocą range(len(collection)), ale jest to mało czytelne.

Używając wbudowanej w Pythona funkcji zip() możemy to uprościć. Funkcja zip() zwraca obiekt zip, ale możesz przekształcić go w różne typy danych. Spójrzmy na ten przykład i zwróćmy listę krotek:

names = ['Nik', 'Jane', 'Melissa', 'Doug']
ages = [32, 28, 37, 53]
gender = ['Male', 'Female', 'Female', 'Male']

# Zipping through lists with zip()
zipped = zip(names, ages, gender)
zipped_list = list(zipped)

print(zipped_list)

# Returns:
# [('Nik', 32, 'Male'), ('Jane', 28, 'Female'), ('Melissa', 37, 'Female'), ('Doug', 53, 'Male')]

Sprawdź oferty pracy na TeamQuest

Użyj f-strings aby łatwo wypisywać komunikaty w konsoli

Począwszy od Pythona 3.8, f-strings mogą być również używane do samodzielnego dokumentowania kodu za pomocą znaku „=”. W praktyce oznacza to, że kiedy wyświetlasz wartość zmiennej w konsoli, nie musisz już pisać f"variable_name = {variable_name}".

Zamiast:

 some_variable = "HELLO!"

print(f"some_variable={some_variable}")

# Returns
# some_variable=HELLO!

możesz napisać tak:

 some_variable = "HELLO!"

print(f"{some_variable=}")

# Returns
# some_variable=HELLO!

Najnowsze oferty pracy:

Polecane wpisy na blogu IT:

Szukasz pracownika IT?

Dostarczymy Ci najlepszych specjalistów z branży IT. Wyślij zapytanie

Wyrażam zgodę TeamQuest Sp. z o.o. na przetwarzanie moich danych osobowych w celu marketingu produktów i usług własnych TeamQuest, w tym na kontaktowanie się ze mną w formie połączenia telefonicznego lub środkami elektronicznymi.
Administratorem podanych przez Ciebie danych osobowych jest TeamQuest Sp. z o.o., z siedzibą w Warszawie (00-814), ul. Miedziana 3a/21, zwana dalej „Administratorem".
Jeśli masz jakiekolwiek pytania odnośnie przetwarzania przez nas Twoich danych, skontaktuj się z naszym Inspektorem Ochrony Danych (IOD). Do Twojej dyspozycji jest pod adresem e-mail: office@teamquest.pl.
W jakim celu i na jakiej podstawie będziemy wykorzystywać Twoje dane? Dowiedz się więcej