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!

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
Podziel się na:
    Facebook email PDF Wykop Twitter

3
Dodaj komentarz

avatar
2 Wątki
1 Odpowiedzi
0 Śledzący
 
Komentarz z największą liczbą reakcji
Najczęściej komentowany wątek
3 Komentarze autora
Mateusz M.Sebastian B.Łukasz Ostatnie komentarze autora

This site uses Akismet to reduce spam. Learn how your comment data is processed.

  Subskrybuj  
Powiadom o
Łukasz
Gość

+1

Sebastian B.
Gość
Sebastian B.

Fajny artykuł :)