Pytania twarde z rozmów Python Flashcards

1
Q

HTTP

A

HTTP to skrót od Hypertext Transfer Protocol i jest to główny protokół używany współcześnie w przegladarkach.

Jest to protokół bezstanowy, tzn. ani serwer (ani klient) nie przechowuje informacji o tym, jakie były wcześniej zapytania pomiędzy określonym serwerem i klientem oraz nie posiada stanu wewnętrznego

W zapytaniach HTTP możemy wyróżnić dwa elementy: nagłówek i ciało.

Nagłówek ma minimum 1 wiersz, który określa metodę HTTP, adres URI oraz wersję protokołu HTTP (obecnie korzystamy z wersji 1.1, oznaczanej w nagłówku jako HTTP/1.1 ). Przykładowy pierwszy wiersz nagłówka wygląda nastepująco:

GET / HTTP/1.1

Gdzie:

GET — to nazwa metody HTTP
/ — to tzw. URI, czyli ta część adresu, który wystepuje po domenie
HTTP/1.1 — okreslenie protokołu, tutaj HTTP w wersji 1.1

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Metody HTTP:
GET

A

Pobieranie zasobu lub jego wyświetlenie, np. wyświetlenie formularza lub strony. Parametry można przekazywac jedynie poprzez adres (np. ?nazwa=wartosc&nazwa2=wartosc2)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Metody HTTP:
POST

A

Przesłanie danych zapisanych jako pary klucz-wartość do serwera (np. wysłanie formularza, gdzie kluczem jest nazwa danego pola a wartością wpisana przez nas wartość). Metoda ta pozwala przesyłać także pliki (a także wiele pliki oraz pary klucz-wartość jednocześnie). Parametry są przekazywane w ciele zapytania, można także przekazywać parametry poprzez adres (tak jak w metodzie GET)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Metody HTTP:
PUT

A

Zastępowanie pełnego zasobu danych. Post wymaga, by w ciele żądania znajdował się komplet danych umożliwiających utworzenie całego obiektu po stronie serwera.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Metody HTTP:
DELETE

A

Usuwanie zasobu na serwerze, z racji bezpieczeństwa praktycznie zawsze jest wyłaczona domyślnie. Obecnie używana głównie w przypadku RESTowych serwisów, wskazując, że dany zasób ma być usunięty (i obsługiwany przez aplikację, a nie sam serwer).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Metody HTTP:
HEAD

A

Analogiczny do zapytania GET, z tym wyjątkiem, że nie zwraca ciała (zawartości). Służy do pobrania metdanych o zasobie w postaci nagłówków HTTP. Dla danego adresu zwraca same nagłówki.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Czym jest Mockowanie?

A

Mock to obiekt pomocniczy, którego używa się zamiast rzeczywistej implementacji w trakcie testów.

Atrapa obiektu (ang. mock object) – symulowany obiekt, który w kontrolowany sposób naśladuje zachowanie rzeczywistego obiekt

Pozwala on na określenie jakich interakcji spodziewamy się w trakcie testów. Następnie można sprawdzić czy spodziewane interakcje rzeczywiście wystąpiły

Np
- symulacja odpowiedzi z serwisów
- symulowanie konkretnych wartości zwracanych przez aplikację
- mockowanie obiektów klas, z którymi wchodzimy w interakcję

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Co to jest paradygmat programowania?

A

Paradygmaty programowania – to różne sposoby, w których dany program lub język programowania może być zorganizowany. Każdy paradygmat składa się z pewnych struktur, cech i opinii na temat tego, jak należy rozwiązywać typowe problemy programistyczne.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

generator Pythona

A

GENERATOR to funkcja, która zwraca iterator.
Zwróci po 1 wartości przy każdym uruchomieniu.

Można rozpoznać generator po słowie
yield, a także next.

Słowo yield informuje interpreter, że ta funkcja jest generatorem

Funkcja next zwraca obiekt generatora przy każdym użyciu, jednak zamiast powtarzać next kilkukrotnie w kodzie można go umieścić w pętli for

Jeśli przekroczymy liczbę iteracji podczas używania generatora to otrzymamy StopIteration error

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

dekorator Pythona

A

DEKORATORY - to funkcje, które za argumenty przyjmują inne funkcje i modyfikują ich działanie albo coś do niej dodaje (dekoruje ją)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

lambda

A

LAMBDA nazywana jest też funkcją anonimową, często używa się ją jako argumentu dla innych funkcji takich jak sorted(), map() czy filter()
Piszemy wtedy key = lambda X: X+2.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

list comprehension

A

po polsku tłumaczy się je jako wyrażenia listowe (choć na nazwa nie jest w powszechnym użyciu)

list comprehension to bardzo lubiany przez programistów mechanizm pozwalający tworzyć listy w jednej linijce

Przykłady:
[x for x in range(5)]
> [0, 1, 2, 3, 4]

Możemy tam odnosić do innych list np.
L = [1,2,3,4,5,6]
L1 = [x**2 for x in L]
> [1, 4, 9, 16, 25, 36]

Możemy również w tych wyrażeniach umieszczać for, if, czy wyrażenia boolean
[x for x in L if x % 2 == 0]

Istnieje także dict comprehension, które umieszczamy w nawiasach wąsatych.
L = [1,2,3,4,5,6]
D1 = {x:x % 2 == 0 for x in L}

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Omów typy wbudowane w Python

A

str – string (ciąg tekstowy), tekstowy typ danych,
int – liczba,
float – liczba zmiennoprzecinkowa,
complex – liczba zespolona,
list – lista
tuple – kortka
range – zakres, liczby naturalne stanowiące szereg arytmetyczny,
dict – słownik,
set – zbiór,
frozenset – zbiór niemutowalny,
bool – logika boolowska,
bytes – konwersja ciągu na bajty,
bytearray – mutowalny wariant bytes,
memoryview – dostęp do wewnętrznych danych obiektów obsługujących bufory protokołów.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Jakie znasz biblioteki standardowe w Python

A

random – biblioteka służąca do pseudolosowego generowania liczb,

datatime – moduł pozwalający na pracę z datą i godziną,

json – zapisuje listy, logikę, liczby, krotki i słowniki do pliku JSON,

pickle - pozwala na serializację (zmiana obiektu na ciąg bajtów) i deserializację obiektów Pythona

os – moduł pozwalający na integrację z systemem plików OS-a,

logging – biblioteka z API pozwalającym na zapisywanie logów.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

__init__

A

__init__ jako plik pozwala na oznaczenie, że dany folder jest pakietem

W OOP to specjalna metoda wywoływana za każdym razem kiedy tworzona jest instancja klasy

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Kopiowanie obiektów w Pythonie?

A

Służy do tego moduł copy, który oferuje dwie metody
copy()
deepcopy()

Za pomocą copy() tworzy się bitową kopię 1:1.

Zaś deepcopy() pozwala na re kursywne kopiowanie wszystkich wartości.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Czy operator = kopiuje?

A

nie, operator przypisania jedynie tworzy odniesienie do miejsca w pamięci, czyli za pomocą = tworzymy powiązanie pomiędzy istniejącym już obiektem a docelową nazwą zmiennej.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Zasięg (scope)

A

Scope to blok kodu, w którym działa dany obiekt i tylko w nim jest dostępny.

Wyróżniamy zasięg globalny i lokalny.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Przestrzenie nazw

A

mówią o tym jaki zasięg ma nazwa (identyfikator) danego obiektu.

Nazwy mogą działać lokalnie - w obrębie funkcji, albo globalnie w całym kodzie

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Moduł a pakiet

A

Zarówno moduły jak i pakiety wykorzystywane są do modularyzacji kodu

Moduł to po prostu plik pythona zawierający metody, klasy zorganizowanego wokół jakiegoś tematu.

Pakiet to coś większego, gdyż składa się z kilku modułów.

Paczka określa dla nich przestrzenie (zasięg) nazw zmiennych i eliminuje konflikty pomiędzy poszczególnymi modułami.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Lista a tablica

A

Tablice są homogeniczne, co oznacza że zawierają dane jednego typu.

Listy są heterogeniczne, można wewnątrz nich zawszeć różne typy danych (int, float, str, bool, inne listy, słowniki itp)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

PYTHONPATH

A

PYTHONPATH to zmienna środowiskowa pozwalająca wskazać dodatkowe lokalizacje, z których Python będzie mógł zaciągnąć moduły i paczki.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

PEP8

A

oficjalny dokument zawierający konwencję zapisu kodu tak aby był on bardziej czytelny.

Twórca Pythona (Guido van Rossum) zaznacza, że kod jest znacznie częściej czytany niż pisany i właśnie dlatego tak ważne jest dbanie o jego czytelność i jednolitość.

Kilka ważniejszych zasad PEP8:
- 4 spacje na każdy poziom wcięcia
- do wcięć powinno się stosować spacje, a nie tabulatory

  • maksymalna długość linii to 79 znaków (docstringi i komentarze – 72)
    Linie mogą być zawijane (kontynuowane) poprzez dodanie lewego ukośnika “\” na końcu linii.
  • definicje klas i funkcji na najwyższym poziomie oddzielamy dwoma pustymi liniami.

-metody w klasie powinny być oddzielane jedną linią

  • importy umieszczane są zawsze na początku pliku, po komentarzach i docstringach, a przed globalnymi i stałymi.

Powinny być pogrupowane według kolejności:
1. importy bibliotek standardowych
2. zewnętrzne importy spoza aplikacji
3. importy z lokalnej aplikacji/biblioteki

  • PEP8 nie rekomenduje pojedynczego ani podwójnego cudzysłowu. Obie wersje są poprawne. Nie należy mieszać tych wersji. Wybrać jedną i trzymać się jej konsekwentnie.
  • nazwy klas CamelCase
  • nazwy zmiennych snake_case
  • gorsze są błędne komentarze niż ich brak.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

Zarządzanie pamięcią

A

W Pythonie za zarzadzanie pamięcią odpowiada tzw. garbage collector

Garbage collector – potocznie nazywany “odśmiecaczem”. Jest tak naprawdę automatycznym procesem odpowiedzialnym za identyfikowanie nieużywanych obiektów, a następnie za ich usunięcie. Nieużywane obiekty to takie, do których nie ma żadnych referencji, czyli nie mamy możliwości dostania się do tego obiektu

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Q

type()

A

Funkcja type zwraca typ danych podanego obiektu.

Funkcja ta może się okazać przydatna podczas tworzenia funkcji obsługujących kilka typów danych.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
26
Q

Czy parametry do funkcji są w Pythonie przekazywanie przez wartość, czy referencję?

A

typy niemutowalne (niezmienne) - przez wartość
typy mutowalne (zmienne) - przez referencje

W dokumentacji Pythona możemy przeczytać, że przekazywanie
argumentów odbywa się zawsze przez wartość, przy czym ta wartość jest zawsze referencją do obiektu, a
nie wartością tego obiektu.

W praktyce oznacza to, że w przypadku niezmiennych typów danych funkcje w
Pythonie działają tak, jakby ich argumenty przekazywane były przez wartość, natomiast w przypadku typów
zmiennych ­ na ogół jak przez referencję.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
27
Q

zmienna

A

Zmienna to miejsce w pamięci, które wskazuje na jakąś wartość.

Zmiennych używamy, żeby nie operować na konkretnych wartościach.

Pojęcie zmiennej tłumaczymy jako pudełko oznaczone symbolem X, w którym schowane są potrzebne nam dane

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
28
Q

Typy zmiennych w Pythonie

A
  1. Liczby – integer (typ całkowity) albo float (typ zmiennoprzecinkowy)
  2. Stringi - pojedyncza litera lub ciąg znaków

Kolekcje
3. Listy
4. Tuple (krotki)
5. Słowniki

  1. Wartości Booleanowskie (True or False)

… w niektórych opracowaniach spotkałam się również z funkcją jako typem

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
29
Q

Wymień typy mutowalne i niemutowalne

A

Referencja (adres miejsca w pamięci) wskazuje na konkretną wartość.

Jeśli nadpiszemy typ mutowalny to referencja pozostanie ta sama, ale zmieni się wartość.

Jeśli nadpiszemy typ niemutowalny to stworzy się nowa referencja wskazująca na nową (zmienioną) wartość.

TYPY MUTOWALNE
list
dict
bytearray
+ obiekty użytkownika

TYPY NIEMUTOWALNE
string
tuple
int, float, complex
bool
range
frozenset
bytes

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
30
Q

język skryptowy

A

Python określany jest jako język skryptowy

Język skryptowy jest językiem programowania, który umożliwia uruchamianie w specjalnym środowisku programów (skryptów). Z reguły te programy są interpretowane a nie kompilowane. Przeznaczeniem tych języków jest automatyzacja powtarzalnych zadań, są również stosowane jako języki osadzone w większych aplikacjach.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
31
Q

interpretowalny

A

Z punktu widzenia programisty Python jest uważany za język interpretowalny.
Wiele współczesnych języków wykorzystuje oba procesy, gdzie najpierw treść programu jest kompilowana do kodu bajtowego, a następnie interpretowana przez program zwany maszyną wirtualną. Python bazuje na obu technikach, ale z punktu widzenia programisty jest uważany za język interpretowalny.

Język interpretowany – język programowania, w którym interpreter analizuje program linia po linii. Przeciwieństwem języków interpretowanych są języki implementowane w postaci kompilatora (kompilator najpierw kompiluje cały program, a następnie zaczyna działać). Języki interpretowane są nieco wolniejsze od języków kompilowanych, lecz prostsze do napisania (mniej rzeczy o które trzeba się martwić podczas pisaniaskodu)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
32
Q

dynamicznie typowany

A

Python sam automatycznie rozpoznaje typ zmiennych na podstawie kodu.

Jest językiem silnie typowanym, czyli nie trzeba w ogóle deklarować typów zmiennych.

Istnieje jednak biblioteka Pythona, która to umożliwia

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
33
Q

duck typing

A

Duck typing – rozpoznawanie typu obiektu nie na podstawie deklaracji, ale przez badanie metod udostępnionych przez obiekt.

Duck typing zazwyczaj wykorzystuje się w dynamicznych językach programowania takich jak Python, Ruby, Groovy czy JavaScript.

Technika ta wywodzi się z powiedzenia: „jeśli chodzi jak kaczka i kwacze jak kaczka, to musi być kaczką”

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
34
Q

__init__

A

initializer (inicjator)
metoda wywoływana za każdym razem kiedy tworzona jest instancja klasy

Służy do ustawienia atrybutów nowo utworzonej instancji

Metoda __init__ nie tworzy nowej instancji, lecz otrzymuje ją gotową (jako pierwszy argument). Prawdziwym konstruktorem jest metoda __new__ – ona tworzy instancję.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
35
Q

__new__

A

tworzy nową instancję klasy, jest prawdziwym konstruktorem.

jest wywoływana jako pierwsza (przed __init__) i zwraca nową instancję klasy

Zwykle nie jest definiowana jawnie

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
36
Q

__str__

A

Celem __str__ jest wypisanie informacji o obiekcie w takiej formie, aby była czytelna dla człowieka.

Aby rozbudować ilość informacji wyświetlanych o obiekcie, musimy dodać specjalną metodę o nazwie __str__

Domyślnie wyświetla ona pełną nazwę obiektu (wraz z umiejscowieniem) i jego adres pamięci (to nas nie powinno interesować). Możemy jednak zamienić ją tak, by zwracała bardziej przydatne informacje o obiekcie. Aby to zrobić, powinniśmy zdefiniować metodę __str__ i zwrócić z niej wartość string, która ma reprezentować obiekt.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
37
Q

__repr__

A

Celem __repr__ jest podanie precyzyjnej, ale niekoniecznie czytelnej dla człowieka informacji o obiekcie.

repr jest wbudowaną funkcją Pythona, która zwraca reprezentację danego obiektu w postaci łańcucha znaków. Działa dla dowolnych obiektów, nie tylko obiektów klas.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
38
Q

__add__

A

metoda specjalna.implementację operatora dodawania dla obiektów zapisanych za pomocą klas

W Pythonie przeciążanie operatorów robi się za pomocą metod specjalnych.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
39
Q

__radd__

A

reverse addition

Metoda Pythona __radd__() implementuje operację odwrotnego dodawania, czyli dodawania zamienionymi miejscami obiektami.

Jest wywoływana przez Python, gdy __add__ z jakiegoś powodu nie zadziała

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
40
Q

konstruktor klasy

A

konstruktor – specjalna metoda danej klasy, wywoływana podczas tworzenia jej instancji.

Podstawowym zadaniem konstruktora jest zainicjowanie obiektu. W Pythonie jest to metoda __init__

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
41
Q

__nazwametody__

A

tak oznacza się metody specjalne (magiczne)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
42
Q

przeciążanie operatorów

A

W Pythonie przeciążanie operatorów robi się za pomocą metod specjalnych.

Chodzi o to, aby operacje które są możliwe do wykonania na obiektach wbudowanych (takie jak dodawanie, odejmowanie, dzielenie, modulo itd) były możliwe do wykonania na obiektach zapisanych za pomocą klas (zdefiniowanych przez użytkownika).

Klasy mogą nadpisywać większość operacji wbudowanych. Nie istnieją wartości domyślne dla metod przeciążania operatorów (i nie są one potrzebne).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
43
Q

metoda a funkcja

A

metoda to funkcja powiązana z klasa

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
44
Q

Czy Python może być używany do po stronie klienta WWW i serwera WWW?

A

Tak, lecz najlepiej nadaje się do backendu, czyki tworzenia aplikacji po stronie serwera WWW.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
45
Q

class zmienne:
def __init__(self):
self.publiczna = 10
self._chroniona = 20
self.__prywatna = 30

A

W Pythonie pola i metody klasy dzielą się na trzy grupy:
1. publiczne (public)
domyślnie wszystkie zmienne i metody \ są publiczne
2. prywatne (private) dla klas
dowolny użytkownik nie może ich zmodyfikować, chyba że autor klasy da taką możliwość
Zmienne i metody prywatne rozpoczynają się od podwójnego podkreślnika __zmienna.

  1. chronione (protected)
    “by convention” te metody i zmienne nie powinny być modyfikowane przez użytkownika, ale mogą być modyfikowane przez obiekty będące instancjami tzw. klas pochodnych. Ich nazwy rozpoczynają się od pojedynczego podkreślnika: _zmienna.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
46
Q

Wymień co najmniej 3-4 korzyści płynące z używania Pythona w porównaniu z innymi językami skryptowymi, takimi jak np. Javascript

A
  1. Python nie jest skomplikowanym językiem gdyż zawiera wiele wbudowanych rozwiązań jeśli chodzi o podstawowe funkcje np. w porównaniu do C++ nie trzeba pisać funkcji aby podzielić stringa
  2. Jest stosunkowo łatwy w czytaniu
  3. Zapewnia szeroki wybór bibliotek
  4. Charakteryzuje się dużą społecznością
47
Q

PIP
PyPI

A

Python Installer Package
narzędzie wiersza poleceń umożliwiający instalowanie modułów Pythona

PyPI - Python Package Index - strona, na której dostępna jest ogromna ilość pakietów do Pythona wraz z dokumentacją
to z niej pip ściąga instalowane przez nas pakiety

48
Q

unittest

A

standardowa biblioteka Pythona, zawiera zestaw klas służących do testowania modułów.

49
Q

Jak parsować stringi i znajdywać wzorce?

A

Służy do tego moduł re, który wchodzi w skład biblioteki standardowej i pozwala na pracę z wyrażeniami regularnymi (Regex)

50
Q

Metody HTTP:
PATCH

A

Metoda PATCH podobnie jak PUT służy do aktualizacji danych o obiekcie, jednak wymaga ona, by dany obiekt istniał. A to dlatego, że nie przesyła ona w żądaniu kompletu danych, a jedynie te dane, które mają zostać zaktualizowane

51
Q

Back-end

A

Back-end aplikacji internetowych to program, który działa po stronie serwera. Możemy go tworzyć za pomocą języka Python. Zawiera on m.in. logikę obsługi żądań od użytkowników (komunikację z klientem). Odbiera żądania (requesty) i wysyła zwrotnie odpowiednie dane (Web responses).

Przykładowe zadania realizowane po stronie back-end’u:

  • uruchomienie skryptu do wygenerowania HTML
  • obsługa baz danych: dostępu do danych, przechowywanie i aktualizowanie rekordów
  • szyfrowanie i odszyfrowywanie danych
  • obsługa logowania się przez użytkowników na ich konta
  • obsługa plików znajdujących się na serwerze – wysyłanie i pobieranie plików
52
Q

Front -end

A

Front-end jest tym, co użytkownik widzi i z czym wchodzi w interakcję (interfejs użytkownika) w przeglądarce internetowej. W przypadku stron internetowych front-end tworzymy w języku JavaScript

53
Q

system do zarządzania treścią

A

CMS (Content Management System) służy do samodzielnego publikowania treści na stronach internetowych, ich modyfikowania czy organizowania

54
Q

Monkey patch

A

Monkey patch to fragment kodu, który rozszerza lub modyfikuje inny kod podczas wykonania programu.

Termin monkey patching w Pythonie odnosi się do dynamicznych modyfikacji klasy lub modułu w czasie uruchamiania.

Monkey patching jest możliwy tylko w językach dynamicznych, których dobrym przykładem jest tutaj Python.

Polega on na ponownym otwieraniu istniejących klas lub metod podczas uruchamiania kodu i zmienianiu ich zachowania.

55
Q

słowo kluczowe (keyword)

A

specjalne słowa, zarezerwowane do konkretnych celów i nie powinny być używane poza tymi celami

Te słowa kluczowe są zawsze dostępne — nigdy nie będziesz musiał importować ich do swojego kodu.

False await else import pass
None break except in raise
True class finally is return
and continue for lambda try
as def from nonlocal while
assert del global not with
async elif if or yield

56
Q

pass

A

pass to instrukcja, , której można użyć jako symbolu zastępczego dla przyszłego kodu.

Gdy pass jest wykonywane, nic się nie dzieje, ale unikamy wyświetlenia błędu

57
Q

built ins

A

to wbudowane funkcje Pythona np. type(). slice(), zip()

58
Q

String Concatenation

A

Using + operator.
Using join() method.
Using % operator (string formatting)
Using format() function.
Using f-string (Literal String Interpolation)

e.g
s1 = ‘Hello ‘
s2 = ‘World’
s3 = s1 + s2
> ‘Hello World’

s1 = (‘Hello’, ‘World’)
s2 = “ “.join(s1)
> ‘Hello World’

s1 = ‘Hello ‘
s2 = ‘World’
s3 = “%s %s” % (s1, s2)
> ‘Hello World’

s1 = ‘Hello ‘
s2 = ‘World’
s3 = “{} {}”.format(s1, s2)
> ‘Hello World’

s1 = ‘Hello’
s2 = ‘World’
s3 = f”{s1} {s2}”
> ‘Hello World’

59
Q

list()
dict()

A

list() tworzy listę elementów
L = list( [“John”, 36, “Norway”] )
L = [“John”, 36, “Norway”]

dict() tworzy słownik (tablica hashowana)
D = dict(name = “John”, age = 36, country = “Norway”)
D = {“name”: “John”, “age”: 36, “country”: “Norway”}

60
Q

set()
list()

A

set()
myset = {“apple”, “banana”, “cherry”}

Set jest nieuporządkowany, niemutowalny i nieindeksowany

list()
mylist = [“apple”, “banana”, “cherry”]

Lista jest uporządkowana (ordered), mutowalna i pozwala na duplikację danych

61
Q

multiple inheritance

A

dziedziczenie po więcej niż 1 klasie

Wielokrotne dziedziczenie oznacza, że można tworzyć klasy, które dziedziczą po wielu klasach jednocześnie.
Nie jest to możliwe w językach Java i C

class Subclass(SuperClass1, SuperClass2):
# initializer
# methods

62
Q

sessions

A

Sesja – tymczasowo, zapamiętane na serwerze dane dotyczące połączenia z klientem.

Cechą charakterystyczną sesji jest to, że przypisane do niej dane mają przeważnie charakter tymczasowy (w przeciwieństwie np. do preferencji przypisywanych do konta klienta).

Sesje są w pełni obsługiwane w Django. Korzystając z ram sesji, można łatwo przechowywać i pobierać tymczasowe dane na podstawie liczby odwiedzających witrynę

Ta struktura przechowuje dane po stronie serwera i zajmuje się wysyłaniem i odbieraniem plików cookie. Te pliki cookie składają się z identyfikatora sesji, ale nie z samych danych, chyba że wyraźnie użyjesz cookie-based backend.

63
Q

cookies

A

Ciasteczka (ang. cookies) to pliki, zapisywane i przechowywane na komputerze lub innym urządzeniu klienta podczas gdy odwiedza on różne strony WWW w sieci Internet.

Plik „cookie” zazwyczaj zawiera:
- podstawowe informacje na temat nazwy strony WWW, z której pochodzi,
- „długość życia” ciasteczka — czyli jaki ustawiony jest czas jego istnienia na komputerze klienta
- unikalny numer służący do identyfikacji przeglądarki, z jakiej następuje połączenie ze stroną WWW.

64
Q

context manager

A

Menadżer kontekstu (ang. context manager) to obiekt, który odpowiednio zarządza danym zasobem, zapewniając, że zostanie on odpowiednio zamknięty.

Przez zamknięty mam tu na myśli czyszczenie, zwalnianie zasobów oraz sprzątanie po wykonaniu bloku kodu.

Dobrym przykładem takiego obiektu, jest użycie open w Pythonie. Korzystając z niego w domyślny sposób, otwieramy plik, odczytujemy pewien jego element, a następnie go zamykamy.

64
Q

context manager

A

Menadżer kontekstu (ang. context manager) to obiekt, który odpowiednio zarządza danym zasobem, zapewniając, że zostanie on odpowiednio zamknięty.

Przez zamknięty mam tu na myśli czyszczenie, zwalnianie zasobów oraz sprzątanie po wykonaniu bloku kodu.

Dobrym przykładem takiego obiektu, jest użycie open w Pythonie. Korzystając z niego w domyślny sposób, otwieramy plik, odczytujemy pewien jego element, a następnie go zamykamy.

65
Q

proxy

A

Serwery proxy są swego rodzaju pośrednikiem pomiędzy stroną internetową i osobą, która ją odwiedza, zapewniają anonimowość użytkownikowi.

Anonimowość, jaką zyskujemy dzięki serwerom proxy, wynika z faktu, że posiadają one własny numer IP.

66
Q

metoda abstrakcyjna

A

ma deklarację, ale nie ma implementacji

Klasa abstrakcyjna przygowana pod inne klasy, które po niej dziedziczą może zawierać metody abstrakcyjne

67
Q

tupla

A

thistuple = (“apple”, “banana”, “cherry”)
niemutowalna

68
Q

lista wielowymiarowa

A

lista w liście

np. szafka = [[[], [], []], [[], [], []], [[], [], []]]

69
Q

gdzie wydajniej wyszukiwaćelement
w liście, czy w słowniku?

A

W słowniku wydajniej szukać

złożoność obliczeniowa wyszukania elementu w liście N-elementowej: O(N)

złożoność obliczeniowa wyszukania elementu w słowniku N-elementowym: O(1) - lepsza!

70
Q

co może byćkluczem w słowniku?

A

Kluczami do słownika mogą być tylko elementy niemutowalne

Lista nie może być kluczem.
Słownik nie może być kluczem.*

*Słownik jest tablicą hashującą, gdzie elementem hashowanym może być jedynie element niemutowalny

71
Q

czy słownik jest typem uporządkowanym?

A

Jest to zależne od wersji Pythona, którą się posługujemy

2 - 3.5 - słownik nie trzyma kolejności (stosowano tzw. OrderedDict)

3.6 - trzyma kolejność, ale jest to niegwarantowane przez twórców

3.7 - słownik trzyma kolejność (gwarantowane)
OrderedDict

72
Q

jak odwrócić listę?

A

L1 = [‘Python’, ‘Java’, ‘C#’, ‘Ruby’]

L2= list( reversed (L1) )

L2=L1[::-1]

oraz
L1.reverse()
powyższy sposób nadpisuje pierwotną listę

73
Q

range()

A

range(start, stop, krok)

zwraca sekwencję liczb w podanym zakresie

74
Q

ennumerate()

A

pobiera sekwencję (np. tuple) i zwraca ponumerowany obiekt

dodaje licznik

np.
x = (‘apple’, ‘banana’, ‘cherry’)
y = enumerate(x)

> [(0, ‘apple’), (1, ‘banana’), (2, ‘cherry’)]

75
Q

min()
max()

A

zwracająnajwiększą/najmniejszą wartość jakiejś sekwencji np. listy

w stringu zwraca tę literę, która ma najwyższy numer ASCII

76
Q

jak sprawdzić podzielność w Pythonie?

A

% to dzielenie modulo, które sprawdza resztę z dzielenia dwóch liczb

np. 4 % 2 == 0, a 5 % 2 != 0

jeśli wynikiem dzielenia modulo jest 0, to znaczy, że podane liczby podzieliły się całkowicie przez siebie

za pomocą modulo możemy też rozróżnić liczby parzyste od nieparzystych

77
Q

argument domyślny

A

Argument domyślny, zostaje utworzony
podczas definiowania funkcji i jest użyty gdy nie podamy innej wartości tego argumentu podczas wywoływania tej funkcji

78
Q

*args
**kwargs

A

napisanie *args jako parametru w nawiasie przy definiowaniu funkcji pozwala potem (przy wywołaniu tej funkcji) przekazywać dowolną (zmienną) liczbę argumentów pozycyjnych

napisanie **kwargs jako parametru w nawiasie przy definiowaniu funkcji pozwala potem przekazywać dowolną liczbę argumentów w postaci słów kluczowych

79
Q

keyword arguments

A

podajemy jako pary nazwa = wartość
dzięki czemu nie musimy ich podawać w odpowiedniej kolejności przy wywołaniu funkcji

80
Q

positional arguments

A

argumenty które podajemy po kolei przy wywołaniu funkcji i gdzie ta kolejność ma znaczenie gdyżnie mają one przypisanych par nazwa = wartość tak jak argumenty w postaci słów kluczowych

81
Q

is, is not
==, !=

A

is to porównanie identyczności, sprawdza czy wyrażenia po lewej i prawej “is” są identyczne tzn. źe is sprawdza
czy ich identyfikatory w pamięci są identyczne, czy badane elementy są tym samym obiektem

== to porównanie wartości, , sprawdza czy wyrażenia po lewej i prawej “==” są równe

Do sprawdzenia identyfikatora służy polecenie id().

82
Q

[:]

A

kopiowanie listy

83
Q

globalne
lokalne

A

zmienna globalna jest dostępna dla całego programu
Istnieje przez cały czas życia programu i widziana z wielu miejsc w programie.

zmienna lokalna (przestaje istnieć po zakończeniu wykonywania funkcji)
żyje tylko w bloku kodu, niewielki zasięg

84
Q

jaki blok jest przeznaczony do operacji na plikach

A

Blok with jest przydatny przy operacjach na plikach, gdyż Python automatycznie zamyka plik po jego opuszczeniu

e.g
with open(‘moj_plik.txt’, ‘r’) as f:
przeczytaj = f.read()
print(przeczytaj)

85
Q

biblioteka random

A

biblioteka random służy do generowania liczb losowych

najbardziej znana funkcja
random.randint()
losuje dowolne liczny w podanym w nawiasie zakresie

Jeśli chcemy kilka tych liczb random.randint() łączymy z funkcją range()

85
Q

biblioteka random

A

biblioteka random służy do generowania liczb losowych

najbardziej znana funkcja
random.randint()
losuje dowolne liczny w podanym w nawiasie zakresie

Jeśli chcemy kilka tych liczb random.randint() łączymy z funkcją range()

86
Q

metody importowania

A

MODUŁY

  1. importujemy moduł:
    import module

aby użyć znajdujących się w nim funkcji używamy :
module.function()

  1. importujemy wszystkie funkcje z danego modułu:
    from module import *
  2. importujemy tylko wybrane funkcje z modułu:
    from module import function1, function3

PAKIETY:
import package.module

package.module.function()

UWAGA Nie możemy importować do kodu całego pakietu, bez wyszczególnienia jakie moduły nas interesują

e.g
gdy mamy pakiet muzyka i moduły instrumenty to:

import muzyka.trabka
import muzyka.perkusja

muzyka.trabka.graj()
muzyka.perkusja.graj()

inne sposoby obejmują np. używanie aliasów

87
Q

map()

A

map(funkcja,sekwencja)

kolejne elementy z sekwencji przekazane są do funkcji (lambdy) która wykonuje się dla każdego elementu i dołącza wynik do nowej sekwencji

e.g
lista = [‘jan kot’, ‘ANNA KRÓL’, ‘jÓzef BYK’]

map(lambda x: x.lower().title(), lista)

88
Q

filter()

A

filter(funkcja,sekwencja)
elementy z listy są przekazywane do funkcji lambda, która wyrzuca True lub False, jeśli True element jest dołączany do nowej listy

e.g
lista = [‘jan kot’, 18, ‘ANNA KRÓL’, ‘jÓzef BYK’, 90]

filter(lambda x:type(x) is str, lista)

89
Q

assert

A

ASERCJA - uznanie danego zdania za prawdziwe

słowo kluczowe assert sprawdza, czy to co się za nim znajduje jest prawdą

jest używane w testach

90
Q

class SwinkaMorska(ZwierzeLadowe, ZwierzeMorskie):
pass

Która klasa ma priorytet, jeśli w dwóch znajdą się te same metody?

A

ZwierzeLadowe

czyli ta która jest podana jako pierwsza w nawiasie

91
Q

@staticmethod

A

metoda statyczna nie jest świadoma bycia częścią klasy

a wiec nie widzi innych metod tej klasy, nie potrzebuje nic pobierać z tej klasy, aby działać

to, że ta metoda należy do klasy jest jedynie kwestią organizacji kodu i wywołujemy ją przez Klasa.metoda()

e.g
class Matematyka
….
@staticmethod
def dodaj(a, b):
return a + b

92
Q

@classmethod

A

metoda klasowa jest swiadoma bycia czescia klasy i widzi inne metody w klasie

wymaga slowa kluczowego cls (zamiast self) bo operuje na klasie a nie na jej obiekcie/instancji

e.g
class Matematyka
….
@classmethod
def dodaj_i_pomnoz(cls,a,b):
return cls.dodaj(a,b) * 2

93
Q

Big O

A

Złożoność obliczeniową w programowaniu określa się notacją, która powszechnie nazywana jest Big O.

Nazwa wzięła się stąd, że jest ona zapisywana jako O(wartość). Mówi ona o tym, ile operacji będzie musiał wykonać komputer,aby dany algorytm zakończył swoją pracę na zbiorze o rozmiarze n.

eg.
jeśli naszym zbiorem jest lista 10-cio elementowa to zapis O(n) będzie mówił, że komputer będzie musiał wykonać 10 operacji.

Zapis O(n**2) będzie mówił, że komputer będzie musiał wykonać 100 operacji.

Zapis O(2**n) będzie mówił, że komputer będzie musiał wykonać 2^10 operacji.

94
Q

dir()

A

dir(obiekt) - wyświetla listę atrybutów danego obiektu

95
Q

help()

A

help() - wpisane w linię komend spowoduje otwarcie interaktywnego menu helpa

help(obiekt.metoda) - wyświetla opis danego atrybutu obiektu

96
Q

Najważniejsze cechy Pythona

A

ZALETY:
Prosta składnia (brak nawiasów klamrowych {})
Python jest językiem interpretowanym, nie kompilowanym
Dynamicznie typowany (rozpoznaje typ zmiennych)

WADY:
ie jest to szybki język. Aby poradzić sobie z “wąskimi gardłami” stosuje się wstawki z C.

Niektórzy programiści narzekają na brak statycznego typowania i na system wcięć zamiast {}. (od tego są inne języki)

97
Q

The Zen of Python

A

import this

98
Q

set()

A

Przegląda zawartość i zapisuje tylko unikalne wartości

99
Q

Agregacja w statystyce/DJANGO
Wyrażenia agregujące w DJANGO

A

W Django to generowanie wartości podsumowujące dla całego QuerySet.

e.g
from django.db.models import Avg
Book.objects..aggregate(Avg(‘price’))

Wyrażenie agregujące jest szczególnym przypadkiem wyrażenia Func(), które informuje zapytanie, że wymagana jest klauzula GROUP BY. Wszystkie funkcje agregujące, takie jak Sum() i Count(), dziedziczą po Aggregate().

Ogólnie w statystyce:
agregacja danych polega na wyliczeniu jednej lub wielu statystyk, takich jak średnia arytmetyczna (najczęstszy przypadek), minimum, maksimum itp., dla grup obserwacji wyznaczonych przez kategorie zmiennych grupujących. W wyniku tej procedury powstaje nowa macierz danych, w której jedna obserwacja odpowiada jednej kategorii zmiennej grupującej, a wartości zmiennych są zastąpione wyliczonymi wartościami przyjętej statystyki dla poszczególnych grup.

100
Q

OOP

A

Programowanie zorientowane obiektowo
(ang. Object-oriented Programming)
to paradygmat programowania, który wykorzystuje klasy oraz obiekty.

Główną koncepcją OOP jest powiązanie danych (przechowywanych w klasach) oraz metod (zachowań).

Jej celem jest implementacja rzeczywistych zjawisk takich jak dziedziczenie (inheritance), polimorfizm (polymorphism), czy enkapsulacja (encapsulation).

Główne koncepty OOP:
Class
Objects
Polymorphism
Encapsulation
Inheritance
Data Abstraction

101
Q

Association (OOP)

A

Association between two objects basically means that they are connected in some way

Association may be done by:
- composition
when one object is composed of another one

  • aggregation
    when one object contains another object

PRZYKŁADY:
Kompozycja (rodzaj asocjacji):
Obiekt dom jest skomponowany z sypialni, łazienki i kuchni.

Kiedy dom spłonie i przestanie istnieć, to sypialnia, łazienka i kuchnia również przestaną istnieć.

Agregacja (rodzaj asocjacji):
Obiekt para zawiera osobę 1 i osobę 2.
Jeśli para się rozejdzie to osoba 1 i osoba 2 nie przestaną istnieć.

Oba rodzaje asocjacji przedstawia się na diagramach UML:
ASOCJACJA połączenie w postaci kreski
KOMPOZYCJA zamknięty romb
AGREGACJA otwarty romb

102
Q

Enkapsulacja/hermetyzacja (OOP)

A

Enkapsulacja (Hermetyzacja) – jest jedną z podstawowych koncepcji programowania obiektowego (OOP). Opisuje ideę grupowania danych, wraz z metodami operującymi na tych danych w ramach jednej jednostki.

Wiele języków programowania (np. Python, Java) często stosuje hermetyzację w postaci klas.

Klasa jest dobrym przykładem hermetyzacji, ponieważ składa się z danych i metod połączonych w jedną jednostkę.

Enkapsulacja może również odnosić się do mechanizmu ograniczania bezpośredniego dostępu do niektórych komponentów obiektu.

Hermetyzacja w programowaniu pozwala nam ukryć dane oraz logikę biznesową przed użytkownikiem. Użytkownik jest w stanie wyciągać dane lub je zmieniać tylko za pomocą ściśle określonych mechanizmów jakimi są zachowania czyli metody, gettery oraz setery. Spójrzmy na przykład konta bankowego, w którym nie stosujemy hermetyzacji.

103
Q

Abstrakcja (OOP)

A

sposób opisywania obiektu na różne sposoby w zależności od kontekstu.

Często jest to uproszczenie pewnych rzeczy poprzez usunięcie informacji, które nie są niezbędne do ich zrozumienia.

Np. pokazujemy użytkownikowi tylko funkcjonalności za pomocą ukrywania lub pomijania innych szczegółów implementacji (wydobywamy informacje, które są konieczne w danej chwili.

Np. gdy szukamy z kimś samochodu na parkingu to podajemy jego kolor i markę, a nie przebieg

Cechą abstrakcji jest WIELOWARSTWOWOŚĆ:

Abstrakcje mogą posiadać wiele poziomów. W naszym przypadku pierwszym poziomem abstrakcji jest samochód, natomiast drugim może być silnik, który wprawia go w ruch czy układ skrętny, który pozwala zmieniać kierunek jazdy. Poziomów abstrakcji jest nieskończenie wiele.

Skoro już mamy pogląd na to czym jest abstrakcja skupmy się teraz na użyciu jej w programowaniu. Abstrakcje opisują zachowania naszych modułów, klas, metod czy też funkcji. Weźmy za przykład klasę odpowiedzialną za wysyłkę wiadomości email. W przypadku tej klasy abstrakcją może być klasa abstrakcyjna lub interfejs. Wykorzystując je jesteśmy w stanie określić jakie metody ma posiadać nasza klasa bez informacji o tym jak dokładnie mają zostać zaimplementowane. Jedyne co będziemy znać to nazwy tych metod, przyjmowane przez nie argumenty i zwracane dane.

104
Q

Polimorfizm (OOP)

A

Polimorfizm to inaczej występowanie danej rzeczy pod różnymi postaciami, które mogą się różnić zachowaniem.

W programowaniu sytuacja wygląda podobnie. Możemy posiadać wiele klas i obiektów, które będą posiadać takie same zachowania (będą udostępniać takie same funkcjonalności), ale będą różnić się od siebie implementacją (czyli tym w jaki sposób wykonują daną rzecz). Dzięki temu możemy używać ich zamiennie. W programowaniu mamy wiele narzędzi, które pozwalają nam uzyskać polimorfizm.

105
Q

Dziedziczenie (OO)P)

A

Dziedziczenie jest mechanizmem, w którym jedna klasa nabywa własności (właściwości i metody) innej klasy po której dziedziczy. Dzięki dziedziczeniu możemy ponownie wykorzystać pola i metody istniejącej klasy bez konieczności ich ponownej implementacji.

W programowaniu ten mechanizm wygląda podobnie. Klasa po której dziedziczymy często jest nazywana super klasą, lub klasą rodzicem. Natomiast klasa, która dziedziczy po super klasie często jest nazywana subklasą lub klasą dzieckiem. Możemy dziedziczyć metody oraz właściwości po naszej klasie bazowej, dzięki czemu nie jesteśmy zmuszeni do ich ponownej implementacji.

Co więcej możemy je również rozszerzać oraz zmieniać (jednak nie jest to polecane robić bo łamie to jedną z zasad SOLID).

106
Q

Problem n+1 zapytań

A

Problem N+1 to antywzorzec wydajnościowy, w którym aplikacja masowo przesyła do bazy danych N+1 małych zapytań o dane z powiązanych tabel, zamiast wysłać jedno zapytanie, które zwróci wszystkie potrzebne dane.

107
Q

Anotacje w Django
Anotacje w Pythonie

A

W DJANGO
W Django adnotacje to sposób na wzbogacenie obiektów zwracanych w QuerySets. Oznacza to, że kiedy uruchamiasz zapytania dotyczące swoich modeli, możesz poprosić o dodanie nowych pól, których wartości będą obliczane dynamicznie, podczas oceny zapytania.

W PYTHONIE
Adnotacje zostały wprowadzone w Pythonie 3.0

Adnotacje dodajemy do argumentów oraz wartości zwracanych funkcji w celach informacyjnych. Można je też dodać do elementów klasy.

Adnotacja musi być prawidłowym wyrażeniem Pythona.

Na początku w PEP 484 pojawiła się informacja o tym w jaki spośób dodawać adnotacje typów (type hints) do kodu:

Adnotacje typów (ang. type hints)
-> ”int”
-> ‘list’

Adnotacje funkcji (mówią to co zwraca ta funkcja)
-> return_type:
-> float:

Adnotacje argumentów
def func(
arg: arg_type,
optarg: arg_type = default) -> return_type:

w powyższym przykładzie syntax to argument: annotation, czyli adnotacje to arg_type i arg_type = default

Możemy sprawdzić adnotację w swoim kodzie za pomocą atrybutu:
.__annotations__

Np.

import math

def circumference(radius: float) -> float:
return 2 * math.pi * radius

circumference.__annotations__
> {‘radius’: <class ‘float’>, ‘return’: <class ‘float’>}

circumference(1)
>6.284

108
Q

Wyrażenia Q

A

WYRAŻENIA Q
W Django obiekty Q są wykorzystywane do tworzenia bardziej skomplikowanych zapytań do baz danych.

Obiekt Q (django.db.models.Q) to obiekt używany do enkapsulacji kolekcji argumentów słów kluczowych.

109
Q

Wyrażenia F

A

W Django sposób na tworzenie bardziej skomplikowanych zapytań.
Obiekt F( ) z klasy F reprezentuje:
- wartość zmiennej modelu,
- przekształconą wartość zmiennej modelu
- kolumnę z adnotacjami

Wyrażenie F umożliwia odnoszenie się do wartości pól i przeprowadzanie operacji na danych z bazy bez konieczności wyciągania ich z bazy danych do pamięci.

Django używa obiektu F() do generowania wyrażenia SQL.

110
Q

Serializacja

A

Proces konwersji obiektu do specjalnego formatu, który jest odpowiedni do przesyłania przez sieć lub przechowywania w pliku lub bazie danych
converting a Python object into a JSON format - dump()

e.g
import json

person = {
….
}

with open(‘person.json’, ‘w’) as f:
json.dump(person, f)

*dumps() function works exactly like dump() but instead of sending the output to a file-like object, it returns the output as a string.

111
Q

Deserializacja

A

Jest to odwrotność serializacji. Konwertuje specjalny format zwrócony przez serializację z powrotem na użyteczny obiekt
converting back from JSON to python - load()

e.g
import json

with open(‘absolute path’, ‘r’) as f:
json = json.load(f)

lub
json_file = open(‘users.json’)
json = json.load(json_file)