od Podstaw
4 godz. 14 min · Python · Full-stack i Programowanie
Rafał Stępień.NET, JS, Java, PythonZaczniemy spokojnie, od konfiguracji Pythona oraz środowiska programistycznego. Nie tracąc czasu uzbroję Cię w zestaw podstawowych instrukcji, za pomocą których stworzymy pierwsze praktyczne programy komputerowe. Zobaczysz na czym polega logika tworzenia aplikacji, jak poprawnie wykorzystywać typy zmiennych udostępnione przez twórców Pythona oraz jak poradzić sobie z obsługą błędów. Na końcu tej sekcji dowiesz się w jaki sposób dbać o wygląd naszego kodu oraz zaoszczędzić czas stosując funkcję.
Żeby zrozumieć i wykorzystywać pracę innych programistów pragnę pokazać Ci czym są moduły i w jaki sposób możesz je tworzyć w Twoim programie. To częsta praktyka pozwalająca na zachowanie przejrzystości kodu wraz z możliwością jego powtórnego wykorzystania w innych częściach naszej aplikacji. Zaznajomimy się z narzędziem PIP, dzięki któremu z łatwością zainstalujesz jeden z ponad 200 000 projektów (bibliotek). Korzystając z pracy wykonanej dzięki tysiącom innych programistów zaoszczędzisz czas oraz zminimalizujesz ilość popełnianych błędów. Na koniec sekcji dowiesz się czym jest virtualenv i dlaczego warto korzystać z niego w każdym projekcie.
W tej sekcji wejdziemy do świata programowania obiektowego - najczęściej wykorzystywanego sposobu w jaki formuje się programy komputerowe w dzisiejszym świecie. Dowiesz się czym jest klasa oraz jak utworzyć ją w Pythonie. Zobaczysz że programiści starają się odzwierciedlić otaczający nasz świat w postać kodu na wszystkie możliwe sposoby. Zapoznam Cię z głównymi nurtami w programowaniu obiektowym, aby zrozumieć w jaki sposób napisać dobrej jakości kod. W każdej części w praktyce wykorzystamy wiedzę teoretyczną zamieniając ją na postać kodu Python-a. Na koniec pokaże Ci jak można obsługiwać niestandardowe zachowania programu w taki sposób, aby nie przestraszyć użytkownika naszej aplikacji :)
Jeśli masz dosyć tworzenia aplikacji konsolowych...wreszcie możesz odetchnąć. Wkraczamy w świat internetu! Twoim celem jest napisanie kolejnego Facebook, utworzenie własnej strony internetowej lub serwera do gier? Czas wykorzystać wiedzę zgromadzoną podczas tego kursu. Pokaże Ci w jaki sposób zainstalować oraz skonfigurować mikroframework Flask do tworzenia aplikacji internetowych. Krok po kroku pomogę Ci w utworzeniu pierwszej aplikacji internetowej wraz z pokazaniem narzędzi takich jak Jinja, sesji oraz techniki Blueprint. Na koniec sekcji pokażę Ci w jaki sposób wgrać swoją aplikację na zewnętrzny serwer i pokazać się światu!
Podczas mojej nauki, pracy oraz pomocy innymi natknąłem się na wiele problemów, które blokowały początkujących adeptów programowania przed dalszą pracą. Być może utkniesz na jakimś błędzie, usuniesz niepoprawną część kodu lub nie będziesz wiedzieć co dzieje się z Twoim programem. Miałem wiele takich chwil, dlatego specjalnie na taką okazję utworzyłem dla Ciebie skrzynkę z narzędziami. Znajdziesz tam sposoby-wytrychy na poradzenie sobie w sytuacjach kryzysowych. Dowiesz się między innymi jak krok po kroku zobaczyć w jaki sposób komputer uruchamia Twój kod, czym mogą być spowodowane niespodziewane błędy oraz w jaki sposób poprawić jakość Twojej aplikacji.
Utworzyłem ten kurs dla osób, które są na początku swojej drogi z programowaniem oraz językiem Python. Jeśli posiadasz już doświadczenie w innych językach programowania z pewnością dużo łatwiej będzie Ci przyswoić wiedzę zawartą w tym kursie, niemniej zakładam, że nie masz pojęcia o programowaniu. W kursie stawiam na praktykę i chcę Ci pokazać jak szybko wykorzystać nabytą wiedzę, dlatego też po bardziej zaawansowaną część teoretyczną odsyłam do blogów, artykułów online oraz książek ze środowiska Pythona-.
Chciałbym porozmawiać z tobą teraz na temat bezpieczeństwa naszej aplikacji lata
temu jeden z moich doktorów zrobił
następującą rzecz wziął mój projekt który robiłem na studiach i
sprawdził jak bardzo jest odporny przed użytkownikiem niestety okazało
się że nie był w ogóle przez co niestety nie mogłem zaliczyć tego projektu teraz
chciałbym pokazać ci w jaki sposób będziemy w stanie zabezpieczyć nasz program i
dlaczego jest to istotne zobaczmy teraz co
się stanie jeżeli dodając nasz posiłek
podamy zamiast ceny
naszego posiłku na przykład jakiś zestaw znaków python
stwierdza nie jest w stanie skonwertować danego łańcucha na
typ liczbowy dlatego też będziemy musieli obsłużyć
ten wyjątek i zagwarantować poprawność naszych danych co
więcej nasz program przestał działać więc wszystkie dane które wcześniej
wprowadziliśmy zostają utracone na pewno nie byłoby
to zbyt miłe dla użytkownika który korzysta z naszego programu okej
zajmijmy się tym problemem przejdźmy do pliku view.py i spróbujmy
uchwycić nasz wyjątek pamiętając
z poprzednich lekcji możemy to zrobić za pomocą klauzuli try
i except w tym miejscu podajemy
jaki kod powinien zostać obsłużony w
tym miejscu mamy rzutowanie naszej ceny ze zmiennej price
do typu float i to jest element który podpowiedział
nam python że niestety się nie powiódł aby jeszcze
raz zobaczyć która dokładnie linijka odpowiada na nasz problem wystarczy
w terminalu zobaczyć że mamy
tutaj wskazówkę dotyczącą linii nr 4 jeśli
przyciśniemy ten przycisk od razu zostaniemy przeniesieni do poprawnego pliku w
tym miejscu wiemy że musimy obsłużyć nasz wyjątek klauzula try pozwoli
nam na schwytanie naszego problemu i
poinformowanie użytkownika że coś poszło nie tak to
co istotne pep 8 podpowiada nam że jest to
zbyt ogólny wyjątek ponieważ nie podaliśmy tutaj konkretnego
typu zobaczmy python podpowiada nam że jest tak zwany value error
czyli problem z rzutowaniem wartości wystarczy
wpisać tutaj value error a następnie powiedzieć
użytkownikowi że coś jest nie
tak okej
zobaczymy teraz jak zachowa się nasz kod okej
co się stało mamy tak zwany type error w linii 13
zobaczmy na co wskazuje nasza linia 13 z metody
ask for meal oczekujemy dwóch typów zmiennych
name oraz oraz price w naszym przypadku jeżeli
wystąpi błąd python zwróci tylko i wyłącznie 1
typ o nazwie none dlatego też
aby poprawnie obsłużyć nasz istniejący kod należy
zwrócić dwie wartości typu none zobaczmy teraz co
się zmieniło w naszym kodzie jak rozpozna
to nasz program dostajemy
bardzo ładną i przejrzystą informację że niestety nie byliśmy w stanie dodać produktu
ponieważ cena która została podana nie jest
typu liczbowego co ważniejsze program nie został zatrzymany
dzięki czemu będziemy w stanie dalej obsłużyć nasz program a
dane które zostały wcześniej wprowadzone nie zostaną utracone okej
w tym przypadku zweryfikujmy
działanie naszego programu zobaczmy co się stało mimo że nie dodaliśmy produktu spróbujmy
wywołać polecenie sum co teraz dostaliśmy
znowu exeption w pliku bill.py
czy domyślasz się co mogło pójść nie
tak mimo że obsłużyliśmy nasz wyjątek to w
tym miejscu dalej dodajemy nasz produkt
mimo że tak naprawdę nie udało się pobrać poprawnych danych od użytkownika dlatego
też w tym miejscu w linii 14 należy zweryfikować
czy podane zmienne nie są typu
none czyli że użytkownik faktycznie podał jakieś
wartości możemy to zrobić za pomocą operatora przyrównania
ale w tym przypadku idealnym będzie operator o nazwie
is sprawdzamy czy name
jest równe wartości none
czyli nie jest zdefiniowana lub słowo kluczowe
or sprawdzamy czy cena
nie jest zdefiniowana jeżeli
którykolwiek z tych przypadków wystąpi wystarczy podać
polecenie continue które spowoduje przejście do następnego przebiegu pętli
bez operowania bez wykonywania tej
linijki kodu zobaczmy jak teraz zachowa się nasz program świetnie
mimo że podaliśmy nieprawidłowe dane to tak naprawdę nasz
produkt nie został dodany co jest poprawne i nie mamy
problemu rzutowania tak jak poprzednio
typu z łańcucha danych na wartości
liczbowe w międzyczasie zrobiłem dla
ciebie typową obsługę błędów aby
nie tracić czasu dla każdej metody prześledźmy sobie w jaki sposób
zostały zmodyfikowane nasze funkcje w pliku view.py
tutaj tak samo jak poprzednio obsłużymy za
pomocą klauzuli try except 3 zmienne i
zweryfikujemy czy faktycznie zostały podane
prawidłowe jedyną różnicą jeżeli chodzi o funkcję ask for service jest
to że musimy zamiast dwóch zwrócić 3 zmienne
ponieważ w pliku main.py gdzie wywołujemy naszą zmienną będziemy
spodziewać się trzech zmiennych zwróconych w naszej funkcji
dlatego też musimy zweryfikować czy każda z nich jest
wypełniona przez użytkownika i w tym
przypadku przejść dalej w naszym programie