Mateusz Mazurek – programista z pasją

Czyli o użyciu Pythona i kilku innych technologii do tworzenia świetnej jakości aplikacji w oparciu o stabilny proces dostarczania oprogramowania.

Felietony/inne Programowanie

Kilka ciekawostek o Pythonie

Cześć! :)

Przez lata zdobywania doświadczenia natknąłem się na kilka ciekawostek które mogą nie być oczywiste dla osób zaczynających pracować z tym językiem, do tej wiedzy dodałem kilka rzeczy które są dookoła samych technikalii i w ramach rozwinięcia filmiku Przemka na ten sam temat – powstał ten artykuł. Zapraszam :)

Zen of Python

Zen of Python to lista założeń w okół których był tworzony ten język. Co ciekawe, zasady te są dostępne z poziomu samego języka. Spróbuj uruchomić taki plik:

1
import this

A zobaczysz że efektem jego uruchomienia są właśnie spisane założenia odnośnie tego języka:

The Zen of Python, by Tim Peters
 Beautiful is better than ugly.
 Explicit is better than implicit.
 Simple is better than complex.
 Complex is better than complicated.
 Flat is better than nested.
 Sparse is better than dense.
 Readability counts.
 Special cases aren't special enough to break the rules.
 Although practicality beats purity.
 Errors should never pass silently.
 Unless explicitly silenced.
 In the face of ambiguity, refuse the temptation to guess.
 There should be one-- and preferably only one --obvious way to do it.
 Although that way may not be obvious at first unless you're Dutch.
 Now is better than never.
 Although never is often better than right now.
 If the implementation is hard to explain, it's a bad idea.
 If the implementation is easy to explain, it may be a good idea.
 Namespaces are one honking great idea -- let's do more of those!

Co po Polsku brzmi tak:

 Piękne jest lepsze niż brzydkie.
 Wyrażone wprost jest lepsze niż domniemane.
 Proste jest lepsze niż złożone.
 Złożone jest lepsze niż skomplikowane.
 Płaskie jest lepsze niż wielopoziomowe.
 Rzadkie jest lepsze niż gęste.
 Czytelność się liczy.
 Sytuacje wyjątkowe nie są na tyle wyjątkowe, aby łamać reguły.
 Choć praktyczność przeważa nad konsekwencją.
 Błędy zawsze powinny być sygnalizowane.
 Chyba że zostaną celowo ukryte.
 W razie niejasności powstrzymaj pokusę zgadywania.
 Powinien być jeden -- i najlepiej tylko jeden -- oczywisty sposób na zrobienie danej rzeczy.
 Choć ten sposób może nie być oczywisty jeśli nie jest się Holendrem.
 Teraz jest lepsze niż nigdy.
 Chociaż nigdy jest często lepsze niż natychmiast.
 Jeśli rozwiązanie jest trudno wyjaśnić, to jest ono złym pomysłem.
 Jeśli rozwiązanie jest łatwo wyjaśnić, to może ono być dobrym pomysłem.
 Przestrzenie nazw to jeden z niesamowicie genialnych pomysłów -- miejmy ich więcej!

Python najpopularniejszym językiem roku 2019

Najfajniej przedstawia to ten filmik, bo pokazuje jak zmieniała się popularność Pythona względem innych języków na przestrzeni lat:

Swoje podsumowanie również dorzuciło StackOverflow, potwierdzające popularność Python’a.

Python nie jedno ma oblicze

Ten Python którego używamy najczęściej to tak naprawdę CPython – czyli najpopularniejsza, wzorcowa implementacja tego języka. Ale najpopularniejsza nie oznacza że jedyna! Implementacji tego języka jest kilka i tu już od konkretnie rozwiązywanego problemu zależy jakiej użyjemy. Napisałem o tym więcej tutaj.

Geneza nazwy

Nazwa języka nie pochodzi od zwierzęcia lecz od serialu komediowego emitowanego w latach siedemdziesiątych przez BBC – „Monty Python’s Flying Circus” (Latający cyrk Monty Pythona). Projektant, będąc fanem serialu i poszukując nazwy krótkiej, unikalnej i nieco tajemniczej, uznał tę za świetną:)

Paradygmat języka Python

W Pythonie możesz pisać używając paradygmatu obiektowego, strukturalnego jak i funkcyjnego!


Czekaj, stop!

Podoba Ci się to co tworzę? Jeśli tak to zapraszam Cię do zapisania się na newsletter:
a w ramach prezentu otrzymasz całkowicie za darmo, dwa dokumenty PDF „6 (nie zawsze oczywistych) błędów popełnianych podczas nauki programowania” który jest jednym z efektów ponad siedmioletniej pracy i obserwacji rozwoju niejednego programisty oraz „Wstęp do testowania w Pythonie”, będący wprowadzeniem do biblioteki PyTest.
Jeśli to Cię interesuje to zapraszam również na swoje social media.

Dla przykład, używając paradygmatu funkcyjnego możemy stworzyć taką funkcję która zwróci funkcję:

1
2
3
sum_it = lambda x : lambda y :  x+y

print(sum_it(3)(4))

Kod ten zwróci oczywiście 7 i jest tożsamy z:

1
2
3
4
5
6
7
def sum_it(x):
    def _inner_sum_it(y):
        return x+y

    return _inner_sum_it

print(sum_it(3)(4))

Zwracanie wyniku funkcji

Python pozwala na zwracanie wielu wartości z funkcji, np.:

1
2
3
4
5
6
7
def func():
    return 1, 2, 3, 4, 5


one, two, three, four, five = func()

print(one, two, three, four, five)

W Pythonie możesz zdefiniować nieskończoność

Taki kawałek kodu poradzi sobie poprawnie z ifami:

1
2
3
4
5
6
7
8
9
10
11
12
inf = float('Inf')

if 999999999999999999 > inf:
    print("Liczba jest większa niż nieskonczonosc!")
else:
    print("Nieskonczonosc jest wieksza niz liczba")

n_inf = float('-Inf')
if -999999999999999999 < n_inf:
    print("Liczba jest mniejsza niż minus nieskonczonosc!")
else:
    print("Minus nieskonczonosc jest mniejsza niz liczba")

I wypisze oczywiście

Nieskonczonosc jest wieksza niz liczba
Minus nieskonczonosc jest mniejsza niz liczba

Sposób uruchamiania programów w Pythonie

Bardzo często mówi się o Pythonie jako o języku który jest interpretowany. To nie do końca jest prawda! Python (a konkretniej CPython – czyli jego najpopularniejsza implementacja) jest językiem który jest kompilowany do języka pośredniego, tzw. bytecode‚u o dopiero ten kod jest interpretowany. Bytecode to właśnie te magiczne pliki z rozszerzeniem pyc. Pisałem o tym więcej tutaj – może nie w kontekście Pythona a Javy, ale idea jest podobna.

Developerski serwer HTTP

Python pozwala na szybkie uruchomienie developerskiego serwer HTTP w bieżącym katalogu, pozwalają na listowanie plików przez przeglądarkę. Można to zrobić tak:

1
2
$ python -m SimpleHTTPServer
Serving HTTP on 0.0.0.0 port 8000 ...

Pod spodem przełącznik „-m” powoduje odnalezienie modułu o podanej nazwie i uruchomienie pliku *.py zawierającego ten moduł jak zwykłego skryptu.

Można uruchomić kawałek Python wprost z CLI

Czyli np. możemy zrobić coś takiego

1
2
3
4
5
$ python -c "import this"
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
....

lub takiego

1
2
$ python3 -c "import sys;print(sys.argv)" test1 test2
['-c', 'test1', 'test2']

Jeśli jesteś zainteresowany kolejnymi dawkami wiedzy z obszaru programowania w Pythonie ale nie jesteś zamknięty tylko na ten język, bo to co tworzę to zahacza też o Jave, JS czy ogólnie o proces dostarczania oprogramowania, to poza Facebookiem, do którego możesz dostać się niżej, przypomnę że na górze strony jest jeszcze Twitter, LinkedIn i Instagram :)

Dzięki za wizytę,
Mateusz Mazurek

A może wolisz nowości na mail?

Subskrybuj
Powiadom o
guest

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.

6 komentarzy
Inline Feedbacks
View all comments
Łukasz

+1

Sebastian B.

Fajny artykuł :)

Mateusz Rus

Ciekawe informacje – o połowie z nich nie wiedziałem!

Karol Kurek

Pisałem Ci na facebooku jakiś czas temu, ale trafiło pewnie do „inne”. Otóż ta część nie jest prawdziwa:
„Python pozwala na zwracanie wielu wartości z funkcji, np.:”
Kiedy robisz return 1, 2, 3, 4, 5
to Python nie zwraca wielu wartości, a jedną tuplę. Warto o tym wiedzieć, w szczególności w takiej sytuacji:
return 1,