4. Python
¤ Dynamicznie typowany
¤ Interpretowany (kompilowany do bajtkodu)
¤ Wieloparadygmatowy
¤ Prosta składnia
¤ Bogata biblioteka standardowa (batteries included)
¤ Duża ilość modułów dodatkowych
5. Gdzie jest haczyk?
¤ Programista musi zadbać o kontrolę typów.
¤ Błędy zgłaszane są dopiero po uruchomieniu programu.
¤ Język skryptowy, więc raczej wolny.
6. Obszary zastosowań
¤ Język skryptowy ogólnego przeznaczenia
¤ Aplikacje dekstopowe
¤ Aplikacje webowe
¤ Obliczenia naukowe
¤ NumPy
¤ SciPy
¤ Pandas
¤ Systemy wbudowane
¤ …
7. Instalacja pakietów zewnętrznych
¤ Pakiety gromadzone są w repozytorium zwanym PyPI)
(Python Package Index)
¤ https://pypi.python.org
¤ Narzędzie pip umożliwia m.in.:
¤ Wyszukiwanie pakietów
¤ Instalację pakietów
¤ Deinstalację pakietów
¤ Aktualizację pakietów
¤ Dostarczanie listy aktualnie zainstalowanych pakietów
8. Instalacja pakietów zewnętrznych
¤ Dodatkowe biblioteki (pakiety) mogą być dystrybuowane
poza PyPI
¤ Instalator – setup.py
¤ Najczęściej używa pakietu setuptools lub distutils
¤ Zapewnia instalację aplikacji i zależności
¤ Sprowadza instalację do wydania komendy )
setup.py install
9. Środowiska wirtualne
¤ Obsługiwane są przez zewnętrzny pakiet virtualenv )
lub wbudowany moduł venv (Python 3)
¤ Izolują środowisko uruchomieniowe dla danego projektu
¤ Ograniczają dostępne pakiety do tych zainstalowanych w
środowisku wirtualnym
¤ Pozwalają instalować pakiety bez uprawnień administratora
¤ Pozwalają zdefiniować interpreter dla projektu
11. Uruchomienie środowiska wirtualnego
¤ W systemach Linux i OS X / macOS
$ source ~/venv/szybkistart/bin/activate
¤ W systemach Windows
> C:venvszybkistartScriptsactivate
13. Interpreter
¤ Wykonuje kod programu w języku Python
¤ W trybie wsadowym wykonuje program z przekazanego
skryptu)
$ python my_script.py
14. Interpreter
¤ W trybie interaktywnym wyświetla linię poleceń i czeka na
akcje użytkownika
$ python
Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 26 2016, 10:47:25)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more
information.
>>>
15. IPython
¤ Interaktywna powłoka dla interpretera języka Python
¤ Alternatywa dla standardowej powłoki
¤ Oferuje kilka ułatwień w pracy:
¤ Kolorowanie i kompletowanie składni
¤ Podpowiadanie zawartości modułów
¤ Dostęp do pomocy
¤ Przeszukiwanie historii
16. Składnia
¤ Niewielka ilość słów kluczowych
¤ Podział na bloki oparty o wcięcia
if __name__ == '__main__':
x = 10
for i in range(x):
print(x)
print(10 * '-')
17. Zmienne
¤ Zmienna przechowuje jakąś wartość
¤ Każda zmienna jest określonego typu
¤ Typ jest określany na podstawie wartości
¤ Każda zmienna musi być zainicjowana
if __name__ == '__main__':
print(value)
Traceback (most recent call last):
File "in2.py", line 2, in <module>
print(value)
NameError: name 'value' is not defined
18. Podstawowe typy zmiennych
¤ int – liczby całkowite
¤ float – liczby zemiennoprzecinkowe
¤ string – łańcuchy znaków
¤ W Python 3.x w formacie Unicode
¤ W Python 2.x w formacie ASCII
¤ Boolean – wartości logiczne (True, False)
¤ None – obiekt zerowy/pusty
20. Instrukcja warunkowa
¤ Python posiada tylko jedną instrukcję warunkową
¤ if…elif…else
x = -10
if x != 0:
print('x nie jest zerem')
21. Instrukcja warunkowa
if x < 0:
print('x jest liczbą ujemną')
else:
print('x jest liczbą nieujemną')
if x < 0:
print('x jest liczbą ujemną')
elif x == 0:
print('x jest zerem')
else:
print('x jest liczbą dodatnią')
23. Operatory porównania
¤ a == b – a jest równe b
¤ a < b – a jest mniejsze niż b
¤ a <= b – a jest mniejsze niż lub równe b
¤ a > b – a jest większe niż b
¤ a >= b – a jest większe niż lub równe b
¤ a != b – a jest różne od b
24. Operatory logiczne
¤ a and b – zwraca True jeśli a i b mają wartość logiczną
True.
¤ a or b – zwraca True jeśli przynajmniej jeden z operandów
ma wartość logiczną True.
¤ not a – zwraca wartość logiczną przeciwną do wartości
logicznej a.
25. Pętla for
¤ Służy do iterowania po określonej sekwencji
¤ Zbliżona do pętli foreach w innych językach
26. Pętla for
items = ['a', 'b', 1, 'c', 'd', 2, 'e', 'f', False]
for i in items:
print(i)
a
b
1
c
d
2
e
f
False
28. Pętla while
¤ Wykonuje kolejne iteracje bloku występującego po while
¤ Iteracje wykonywane są dopóki warunek pętli jest
spełniony
¤ Może nie wykonać się ani razu
¤ Może być pętlą nieskończoną
29. Pętla while
x = 10
while x > 0:
print(x)
x -= 1 # x = x - 1
10
9
8
7
6
5
4
3
2
1
30. break i continue
¤ W każdej pętli można użyć słów kluczowych break i
continue
¤ break powoduje natychmiastowe przerwanie wykonywania
pętli
¤ continue powoduje przejście do kolejnej iteracji
32. ¤ Definicja każdej funkcji składa się z 3 elementów:
¤ Nazwy funkcji
¤ listy parametrów ( może być pusta)
¤ ciała funkcji
def print_hello(name, surname):
print('Hello {} {} !'.format(name, surname))
nazwa funkcji
lista
parametrów
ciało funkcji
33. Funkcje – argumenty pozycyjne
def print_n(text, n):
for i in range(n):
print(text)
print_n("my text 1", 10)
34. Funkcje – argumenty nazwane
print_n2("my text")
print_n2("my text", 10)
print_n2("my text", 10, True)
print_n2("my text", n=10)
print_n2("my text", add_asterisk=True)
def print_n2(text, n=5, add_asterisk=False):
for i in range(n):
print(text)
if add_asterisk:
print('*')
35. return
¤ Funkcja może zwracać wartość (zupełnie jak na matematyce)
¤ Wartość zwracaną przez funkcję można przypisać do
zmiennej, lub używać jak każdej innej wartości w języku
Python.
¤ Wartość funkcji jest zwracana przy pomocy słowa kluczowego
return
37. Funkcje o zmiennej ilości parametrów
def my_function(*args, **kwargs):
pass
print(1,2,"text", 8.4)
38. Zakres widoczności zmiennych
¤ Pierwsze przypisanie do zmiennej wewnątrz funkcji tworzy
zmienną lokalną
¤ Odwołanie się do nieznanej zmiennej wewnątrz funkcji
powoduje przeszukiwanie zewnętrznych zakresów.
¤ W przypadku nieznalezienia zmiennej zgłaszany jest wyjątek
¤ Aby zmodyfikować zmienną globalną z wnętrza funkcji
konieczne jest użycie słowa kluczowego global.
39. Krotka
¤ Sekwencja dowolnych obiektów języka Python.
¤ Krotka (ang. tuple) zapisywana jest jako ciąg obiektów
oddzielonych przecinkami i ujętych w nawiasy okrągłe.
t = (1, 2, 'test', (4, 5, 6), [6, 5], None)
t = ( 2, )
¤ Krotka jednoelementowa musi być zakończona przecinkiem.
¤ Krotka jest typem niezmiennym (ang. immutable)
¤ Raz zdefiniowana nie może zmienić swojej wartości.
40. Lista
¤ Sekwencja dowolnych obiektów języka Python.
¤ Lista zapisywana jest jako ciąg obiektów oddzielonych
przecinkami i ujętych w nawiasy kwadratowe.
l = [1, 2, 'test', (4, 5, 6), [6, 5], None]
¤ Lista jest typem zmiennym (ang. mutable)
¤ Zawartość listy może być zmieniana po jej zdefiniowaniu
41. Łańcuch znaków
¤ Łańcuch znaków (ang. string) to uporządkowany ciąg znaków.
¤ Łańcuchy znaków ujęte są w cudzysłów pojedynczy, lub
podwójny.
¤ W Pythonie nie ma osobnego typu odpowiedzialnego za
pojedyncze znaki.
42. Łańcuch znaków
¤ Łańcuchy znaków w Pythonie 3 zawsze składają się ze znaków
Unicode.
¤ Istnieje typ bytes, który używa znaków ASCII.
¤ Używany jest głównie do reprezentowania danych binarnych.
¤ String jest typem niezmiennym (ang. immutable).
44. split i join
¤ Metoda split pozwala podzielić zadany łańcuch znaków z
uwzględnieniem separatora.
¤ Metoda join pozwala scalić zadaną listę łańcuchów
znaków do pojedynczego łańcucha
45. split i join
>>> s = 'Ala ma kota'
>>> s.split(' ')
['Ala', 'ma', 'kota']
>>> s.split()
['Ala', 'ma', 'kota']
>>> l = s.split()
>>> l
['Ala', 'ma', 'kota']
>>> '-'.join(l)
'Ala-ma-kota'
46. Sekwencje
¤ Wszystkie typy, które reprezentują uporządkowane ciągi
elementów (np. listy, krotki (ang. tuple), łańcuchy znaków (ang.
string))
¤ Dostęp do elementów odbywa się poprzez indeks
¤ a[10]
¤ Operator slice pozwala wybrać pewien podzbiór sekwencji
¤ a[2:4]
¤ Rozszerzony operator slice pozwala pominąć niektóre elementy
¤ a[2:8:2]
50. Operator in
¤ Do sprawdzenia, czy dany obiekt należy do sekwencji
można użyć operatora in.
>>> s = 'Some text'
>>> 'S' in s
True
>>> 'q' in s
False
>>> l = ['a', 'b', 'cd', 1, 2, 3]
>>> 1 in l
True
>>> 'cd' in l
True
51. Słownik
¤ Zbiór obiektów przechowywanych jako pary klucz-wartość.
¤ Zapisywany jest jako kolejne elementy klucz-wartość ujęte w nawiasy
klamrowe.
¤ Kluczem może być prawie dowolny obiekt.
¤ Klucz musi posiadać stały skrót (ang. hash).
¤ Wartościami mogą być dowolne obiekty.
¤ Kolejność elementów słownika nie jest stała i nie musi być zgodna z
kolejnością dodawania.
¤ Obecność klucza w słowniku można sprawdzić przy pomocy operatora
in.
52. Słownik
person = {
'name': 'John',
'surname': 'Doe'
}
print(person)
print('=' * 20)
person['age']= 43
print(person)
print('=' * 20)
if 'age' in person:
print('Age: {0}'.format(person['age']))
53. Pliki
¤ Do otwarcia pliku służy funkcja open(filename, mode)
¤ filename – nazwa pliku
¤ mode – string określający tryb otwarcia
¤ wartość zwracana jest obiektem pliku
¤ Tryby otwarcia pliku:
¤ 'r' – do odczytu
¤ 'w' – do zapisu
¤ 'r+' – do odczytu i zapisu
¤ 'a' – do dopisywania
54. Pliki binarne
¤ Dodatkowo wprowadzono tryby binarne:
¤ 'rb' – do odczytu
¤ 'wb' – do zapisu
¤ 'r+b' – do odczytu i zapisu
55. Odczyt danych
¤ Otwarcie pliku
f = open('file.txt', 'r')
¤ Odczyt 5 znaków
f.read(5)
¤ Odczyt odczyt całej zawartości
f.read()
¤ Odczyt listy linii
¤ Znaki końca linii są również odczytywane
f.readlines()
56. Odczyt linia po linii
f = open('file.txt', 'r')
for line in f:
print line
57. Zapis danych i zamknięcie pliku
f.write('This is a testn')
f.close()
58. Context manager
¤ Dba o to, żeby plik bez względu na powodzenie operacji
został zamknięty.
with open('somefile', 'r') as f:
data = f.read()
59. Moduły
¤ Moduły są po prostu plikami z rozszerzeniem .py.
¤ Aby korzystać z danego modułu w naszym skrypcie należy go
zaimportować przy pomocy słowa kluczowego import.
¤ Można importować tylko wybrane elementy modułu
(zmienne, funkcje, klasy) przy pomocy from..import.
60. Pakiety
¤ Pakiety są katalogami grupującymi moduły.
¤ Każdy pakiet musi posiadać specjalny plik __init__.py.
¤ Plik ten może być pusty.
61. Logowanie
¤ Logowanie pozwala wypisywać komunikaty w trakcie
działania programu.
¤ Dostarcza dodatkowych informacji przy debugowaniu.
¤ Narzędzia logujące znajdują się w module logging.
¤ Rozróżniamy kilka poziomów logowania:
¤ info
¤ debug
¤ warning
¤ error
63. Pakiet requests
¤ Zewnętrzny pakiet wspomagający komunikację poprzez
HTTP.
¤ Przydatny m.in. do wysyłania zapytań do REST API.
¤ Bardzo popularny z uwagi na swoją przyjazność.
64. Klasy i obiekty
¤ Klasy są sposobem na grupowanie zmiennych i funkcji
¤ Klasa jest typem danych (tak jak int, string, list itd.)
¤ Obiekt jest instancją danej klasy (zmienną danego typu)
¤ Zmienne w obiekcie nazywamy atrybutami
¤ Funkcje w obiekcie nazywamy metodami
65. Klasy i obiekty
class MyClass:
def my_method(self):
# do something
pass
my_object = MyClass()
my_object.my_method()
66. Parametr self
¤ Każda metoda w klasie przyjmuje self jako pierwszy
parametr.
¤ Nazwa self jest jedynie konwencją.
¤ Parametr self jest odwołaniem do bieżącej instancji
obiektu.
¤ Pozwala na dostęp do atrybutów z wewnątrz obiektu
¤ Parametr self musi być zadeklarowany jawnie.
¤ Parametr self zawsze przekazywany jest domyślnie przy
wywołaniu metody.
67. Metoda __init__
¤ Czasami przez analogię do innych języków nazywana
konstruktorem.
¤ Inicjalizuje obiekt
¤ Zawiera wszystkie operacje, które muszą być wykonane po
utworzeniu obiektu w pamięci.
¤ Może nie przyjmować żadnych argumentów.
¤ Może zostać pominięta w klasie.
69. Atrybuty obiektu
¤ Muszą być zainicjowane wewnątrz metody __init__.
¤ Zawierają wartości specyficzne dla obiektu (nie dla klasy!)
¤ Każda instancja ma dostęp tylko do swoich atrybutów
70. Atrybuty klasy
¤ Są inicjowane po deklaracji klasy.
¤ Są dostępne dla każdego obiektu oraz dla samej klasy.
¤ Są współdzielone pomiędzy wszystkimi instancjami.
71. Dziedziczenie
¤ Pozwala na uszczegółowianie cech obiektów.
¤ Daje możliwość tworzenia w łatwy sposób obiektów
różniących się od innych jedynie w pewnych szczegółach.
¤ Klasę z której dziedziczymy nazywamy klasą bazową.
¤ Klasę dziedziczącą nazywamy podklasą.
75. Szkolenie dedykowane dla Ciebie
Interesuje Cię tematyka warsztatu?
Zapoznaj się z programem szkolenia Sages:
• Programowanie w języku Python, 27.01.2018
Dla uczestników dzisiejszego warsztatu zniżka na to szkolenie
w wysokości 50%