Python jest aktualnie najpopularniejszym językiem programowania. Przyczyniło się do tego wiele jego mechanizmów wymyślonych lub zaadaptowanych przez genialnego twórcę tego języka Guido van Rossuma. Sprawiłyone, że język ten jest atrakcyjny zarówno dla osoby dopiero rozpoczynającej naukę programowania (aktualnie Python jest często polecany jako „wstępny” język programowania) jak i dla profesjonalnego programisty. Python jest wykorzystywany w obróbce ogromnej ilości danych (big data), tworzeniu maszyn samouczących (artificial intelligence), tworzeniu backendu stron internetowych (frameworki takie jak Django i Flask), wizualizacji danych, tworzenia skryptów, automatyzacji pracy, a nawet tworzeniu gier. Wykorzystują go takie firmy jak Google, Facebook/Meta, IBM, Intel, Spotify i wiele innych. Przyjrzyjmy się teraz kilku mechanizmom Pythona, które sprawiają, że skomplikowane wydają się być takie proste.

 

Zamiana wartości

 

Zwykle kod napisany w Pythonie jest krótszy niż analogiczny (implementujący ten sam algorytm) w innych językach programowania. Tak na przykład zamiana wartości dwóch zmiennych w języku C zwykle odbywa się przy pomocy dodatkowej zmiennej. Wygląda to tak:
 


int a = 10;
int b = 20;
int temp = a;
a = b;
b = temp;

od teraz zmienna b ma wartość 10, zaś zmienna a posiada wartość 20. W przypadku wartości liczbowych istnieje matematyczna sztuczka pozwalająca dokonać zamiany bez użycia trzeciej zmiennej:
 

int a = 10;
int b = 20;
a = a + b;   // a ma wartość 30
b = a – b;  // b ma wartość 10
a = a – b;  // a ma wartość 20

W językach wyższego poziomu jest to zdecydowanie prostsze. Na przykład w języku C++ wystarczy wywołać funkcję swap pozwalającą zamienić wartościami dwie zmienne:

int a = 10;
int b = 20;
swap(a, b);  // teraz "a" ma wartość 20 zaś "b" ma wartość 10.

Jednak prostotą nic nie dorównuje wbudowanemu w Pythona mechanizmowi zamiany dwóch wartości:

a = 10
b = 20
a, b = b, a  # teraz "a" ma wartość 20 zaś "b" ma wartość 10

 

Piękno Pythona zaś przejawia się w tym, że jego sposób nie komplikuje się, gdy chcemy podmienić większą ilość „zmiennych” (w Pythonie zawsze: obiektów) bądź gdy obiekty te mają różne typy:
 


a = 10.2
b = 20
c = [1, 2, 3]
a, b, c = c, a, b

i tak o to obiekty z lewej przyjmują wartości obiektów z prawej w odpowiedniej kolejności ("a" wynosi teraz [1, 2, 3], "b" wynosi 10.2 zaś "c" wynosi 20)
 

 

Zwracanie wielu wartości przez funkcję

 

W większości języków programowania funkcja może zwracać tylko jeden obiekt / jedną zmienną. Podobnie jest w Pythonie – zwraca on jeden obiekt. Co najwyżej jest to tupla (krotka) wielu innych obiektów, ale opakowana właśnie w jeden obiekt. Jednak dla początkującego programisty wygląda to tak jakby Python potrafił, w przeciwieństwie do innych języków programowania, zwracać wiele wartości.


def my_function():
    return 1, "a", None, 10.2, False

val1, val2, val3, val4, val5 = my_function()

tak wywołana funkcja my_function() sprawi, że val1 będzie miał wartość 1, val2 wartość „a”, itd.
W rzeczywistości my_function zwraca jeden obiekt tupli z pięcioma jej elementami, zatem ostatnia linia to tak naprawdę „zamiana wartości” pięciu obiektów:
 

val1, val2, val3, val4, val5 = 1, „a”, None, 10.2, False



Tworzenie skomplikowanych kolekcji

 

W Pythonie aby stworzyć kolekcję (np. listę, ale też zbiór czy słownik) obiektów spełniających pewne kryteria nie trzeba pisać wielu zagnieżdżonych pętli i instrukcji warunkowych – służą do tego listy/zbiory/słowniki składane. Tak na przykład wyświetlenie listy zawierającej kwadraty liczb od 1 do 100 przy założeniu, że pierwszą cyfrą wyniku (kwadratu) nie jest jedynka można zapisać klasycznie:
 


square_list = []
for i in range(1, 101):
    square = i**2
    if not str(square).startswith('1'):
        square_list.append(square)
print(square_list)



lub w duchu Pythona:

 

 


print([i**2 for i in range(1, 101) if not str(i**2).startswith('1')])


Jeśli chcesz dowiedzieć się więcej o możliwościach Pythona i jego prostocie zapraszamy do kursów: