SI DeepLearning Python
SI DeepLearning Python
DEEP LEARNING
Adrian Horzyk
[email protected]
www.agh.edu.pl
WPROWADZENIE
Python (https://www.python.org/) jest językiem programowania ogólnego
przeznaczenia typu open source, zoptymalizowany pod kątem jakości,
wydajność, przenośności i integracji. Jest on obecnie używany przez miliony
programistów na całym świecie.
Python jest niezwykle prostym językiem zorientowanym obiektowo
(OOP – Open Oriented Programming), posiadającym czytelną składnię,
łatwy w utrzymaniu i integracji z komponentami języka C, posiadający bogaty
zbiór interfejsów, bibliotek i narzędzi programistycznych.
Twórcą języka Python jest Guido van Rossum.
Python jest językiem interpretowanym, co daje większą łatwość modyfikacji
gotowego programu, lecz obniża efektywność działania w stosunku do
języków kompilowanych, takich jak C.
Program źródłowy napisany w języku Python (podobnie jak w Java)
może być najpierw kompilowany do postaci pośredniej (byte-code),
która następnie wykonywana jest przez Wirtualną Maszynę Pythona (PVM)
na konkretnej platformie obliczeniowej.
ŚRODOWISKO
Python Spyder (https://pythonhosted.org/spyder/) jest środowiskiem
developerskim, które posiada wersję dla Windows, Linux i IOSa.
Uruchom Zainstaluj
Jupytera w przeglądarce Jupyter Notebooka
PyCharm
Rekomenduje się zainstalowanie PyCharm dla Anakondy:
PyCharm
PyCharm jest IDE Pythona dla profesjonalnych deweloperów
• Obejmuje tryb naukowy do interaktywnej analizy danych.
STAŁE, LICZBY I ŁAŃCUCHY
• Liczby: 5, 3.24, 9.86e-3, (-5 + 2j)
• Łańcuchy: 'Łańcuch', "Łańcuch" – w apostrofach lub cudzysłowiach
• " " " Za pomocą potrójnych cudzysłowów można oznaczać łańcuchy
wielolinijkowe " " "
• W łańcuchach można używać znaków specjalnych, np. znaku nowej linii: \n
" Pierwszy wiersz.\nDrugi wiersz. "
• Jeśli łańcuch poprzedzimy znakiem r lub R, wtedy nie są uwzględniane znaki
specjalne, a tekst jest traktowany dosłownie: R" …\n…" – tzw. łańcuch surowy.
• Chcąc poprawnie wyświetlać polskie znaki diakrytyczne najlepiej posłużyć się
unikodem sygnalizując to znakiem u lub U: U"Tekst zapisaliśmy w Unikodzie"
• Python automatycznie łączy łańcuchy obok siebie: 'Adrian' 'Horzyk' zostanie
automatycznie przekonwertowany przez interpreter Pythona na 'Adrian Horzyk'
• Łańcuchy w Pythonie są niezmienne, lecz istnieją metody operowania na nich,
tworząc nowe z części starych.
ZMIENNE
Zmienne umożliwiają przechowywanie w pamięci komputera dane, które mogą
zmieniać się w czasie, np. w wyniku obliczeń.
Zmienne posiadają swoje nazwy, które je identyfikują:
• Pierwszym znakiem identyfikatora musi być mała lub duża litera alfabetu
(łacińskiego) albo podkreślnik (_), lecz takie zmienne mają specjalne znaczenie.
• Pozostałe znaki mogą zawierać małe lub duże litery alfabetu łacińskiego,
podkreślniki oraz cyfry (0–9).
• Wielkość znaków w identyfikatorze jest ważna, stąd nazwaZmiennej
i nazwazmiennej to dwie inne zmienne.
• Przykłady poprawnych identyfikatorów to: i, __moja_zmienna, nazwa_123, a1.
• Nazwy zmiennych nie mogą rozpoczynać się od cyfry, zawierać spacje ani łączniki:
3A, nazwa ze spacjami, nazwa-z-lacznikiem.
OPERATORY
Operatory służą do wykonywania operacji matematycznych, logicznych i symbolicznych:
• Dodawanie: + Dodawanie do dotychczasowej wartości: a += 2
• Odejmowanie: - Odejmowanie od dotychczasowej wartości: a -= 2
• Mnożenie: * Mnożenie przez dotychczasową wartość: a *= 2
• Druga potęga: **
• Dzielenie: / Dzielenie przez dotychczasową wartość: a /=
• Dzielenie całkowite: // Dzielenie, po którym część ułamkowa jest obcinana: 9 // 2 = 4
• Reszta z dzielenia: %
• Dodawanie zbiorów: +
• Multiplikacja zbiorów: *
• Suma zbiorów: |
• Iloczyn zbiorów: &
• Odejmowanie zbiorów: -
• Negacja: not == równość, != nierówność,
• Alternatywa: or >, <, >=, <= znaki nierówności liczbowej lub leksykograficznej
• Koniunkcja: and
Operatory podsumowanie: https://www.tutorialspoint.com/python/pdf/python_basic_operators.pdf
INSTRUKCJA WARUNKOWA
Instrukcja warunkowa:
if WARUNEK1: # Jeśli jest spełniony wykonaj blok instrukcji
Instrukcja1
Instrukcja2
elif WARUNEK2: # Jeśli nie to zbadaj kolejny warunek
Instrukcja3
Instrukcja4
else: # Jeśli nie jest spełniony wykonaj blok instrukcji
Instrukcja5
Instrukcja6
Instrukcja7 # Instrukcja następna po instrukcji warunkowej
Instrukcja3 po else jest zawsze wykonywana za wyjątkiem sytuacji, gdy pętla jest przerwana
poleceniem break.
Każda część instrukcji warunkowej kończy się dwukropkiem!
INSTRUKCJA PĘTLI FOR … IN
Instrukcja pętli for … in służy do iterowania po dowolnej sekwencji obiektów,
gdzie sekwencja to uporządkowany zbiór elementów:
for i in range (1,5): # i przyjmuje kolejne wartości od 1 do 4
Instrukcja1
Instrukcja2
else: # Element else jest opcjonalny
Instrukcja3 # Instrukcja3 wykonana po zakończeniu pętli
Instrukcja4 # Instrukcja następna po instrukcji pętli
Instrukcja3 po else jest zawsze wykonywana za wyjątkiem sytuacji, gdy pętla jest przerwana
poleceniem break.
Istnieje również możliwość przerwania aktualnie wykonywanego cyklu pętli (czyli pominięcie
pozostałych instrukcji pętli) i kontynuować jej wykonywanie dla kolejnego elementu
iterowanej sekwencji poleceniem continue.
Każda część instrukcji warunkowej kończy się dwukropkiem!
Funkcja range (x,y) zwraca kolejne liczby rozpoczynając od x do liczby poprzedzającej y.
for i in range (x,y) w Pythonie odpowiada instrukcji for (int i=x; i<y; i++) w C++
PRZERYWANIE PĘTLI i CYKLU
Przerywanie pętli poleceniem break
oraz przerywanie aktualnego cyklu pętli poleceniem continue:
for i in range (1,10): # i przyjmuje kolejne wartości od 1 do 9
s = raw_input('Wpisz coś: ')
if len(s) > 10: # Funkcja len(s) zwraca długość łańcucha s.
print "Tekst jest za długi!"
break # Przerywamy!
elif len(s) < 3 :
print "Tekst jest za krótki!"
continue # Ignorujemy kolejne instrukcje w bloku pętli!
print "Tekst ma prawidłową długość, tzn. 3 do 10 znaków."
else:
print "Jeśli nie wpisałeś zbyt długiego tekstu zobaczysz ten komunikat."
print "Następna instrukcja po zakończeniu pętli."
# Funkcja len(s) może zwracać niepoprawne wartości dla polskich znaków # diakrytycznych (‘ą’, ‘ę’, ‘ó’, ‘ł’, ‘ś’, ‘ć’,
‘ń’, ‘ź’, ‘ż’), mnożąc każdy z nich przez 2 lub 4, jeśli nie poinformujemy Pythona o stosowaniu Unicode, np. u'Łoś'
FUNKCJE
Funkcje umożliwiają wyciąć pewien fragment kodu w celu jego wielokrotnego użytku
w różnych miejscach w programie. Takim fragmentom kodu nadajemy nazwę, która
będzie służyła do wywołania tego fragmentu kodu z opcjonalną listą parametrów
ujętych w nawiasach. Funkcja w Pythonie może zwracać jedną lub więcej wartości:
def jakCiSiePodobaWyklad(nazwa): # Definiujemy funkcję i jej nazwę
if nazwa == 'WDI':
print u'Wykład jest super!'
else:
print u'Jeszcze nie wiem?'
# Wartości parametrów domyślnych muszą być niezmienne (stałymi), czyli nie mogą
być zmienną ani wyznaczane w wyniku obliczeń czy innych operacji.
# Można nawet zmieniać kolejność parametrów, jeśli jawnie podajemy, któremu jaką
wartość przypisujemy.
ZWRACANIE WARTOŚCI
Funkcje mogą zwracać wartości. Celem wskazania tych wartości lub zmiennych
stosujemy słowo kluczowe return:
def maksimum(x, y): # Definiujemy funkcję i jej nazwę
if x > y:
return x
else:
return y
# Możemy zwrócić nawet więcej niż jedną wartość, np. krotkę zawierającą wiele
wartości.
# Każda funkcja domyślnie zwraca wartość None, chyba że wykorzystamy return.
# None to specjalny wartość w Pythonie, która oznacza po prostu nic / brak wartości.
MODUŁY
Funkcje można agregować i tworzyć moduły (biblioteki funkcji), które można
zaimportować do wielu różnych programów przy pomocy instrukcji import.
Istnieje również standardowa biblioteka Pythona, którą importujemy następująco:
import sys
Do funkcji i zmiennych wewnątrz modułu odwołujemy się przy pomocy kropki:
sys.path
sys.argv # to lista ciągów znaków
Wskazując wyraźnie przed kropką z jakiego modułu ta funkcja lub zmienna pochodzi.
Możemy równocześnie zaimportować wiele funkcji z różnych modułów.
Chcąc uzyskać informacje o katalogu, w którym jesteś posłuż się:
import os
print os.getcwd()
Moduły można kompilować w celu przyspieszenia operacji na nich, wtedy posiadają
rozszerzenie .pyc.
IMPORTOWANIE
Można wybiórczo importować funkcje z wybranych modułów instrukcją
from … import …
np.:
from sys import argv
lub
Zaimportować wszystkie funkcje z wybranego modułu:
from sys import *
Należy jednak unikać importowania wszystkiego z każdego modułu, gdyż powoduje
to zaśmiecenie przestrzeni nazw a ponadto może dojść do konfliktu nazw pomiędzy
różnymi modułami.
Importujemy tylko najczęściej stosowane funkcje w celu ominięcia konieczności
stosowania przedrostków wskazujących na nazwy modułów.
TYPY ZMIENNYCH
Python pozwala używać zmiennych do przechowywania wartości dowolnego typu.
Utworzenie zmiennej polega na nadaniu jej wartości początkowej:
a=4
Usunięcie zmiennej wykonujemy instrukcją del:
del a
Metody wyrównujące:
s.rjust() wyrównuje łańcuch do prawej strony dodając spacje od lewej
s.center(64) służy do wyśrodkowania tekstu w polu o zadanej długości
s.center(64, '*') dodatkowo wypełnia miejsca puste wskazanym znakiem '*'
'********************to jest fajna UCZELNIA!*********************'
Metoda pop(i) zwraca wartość z i-tej pozycji listy i równocześnie usuwa ją z listy:
Lista.pop(7) daje: 7
d = [1, 2, 3, 4, 5, 6, 7]
while d:
d = d[:len(d)-1] # w każdym kroku zmniejszamy listę o jeden
print d
otrzymując:
[1, 2, 3, 4, 5, 6]
[1, 2, 3, 4, 5]
[1, 2, 3, 4]
[1, 2, 3]
[1, 2]
[1]
[]
Wiele rezultatów funkcji
W Pythonie funkcje mogą zwracać wiele rezultatów w postaci krotki: