Pytanie |
Odpowiedź |
Python proces wykonywania rozpocznij naukę
|
|
1) Analiza pod względem błędów, tłumaczenie na bajtkod 2) Maszyna wirtualna Python, pętla prog: 1) wczyt instr bajtkod, wykonuje instr w C, zarzadza stosem
|
|
|
|
rozpocznij naukę
|
|
Jest to zestaw instrukcji dla Maszyny Wirtualnej, a nie dla fizycznego procesora (CPU). Nazwa pochodzi stąd, że każda instrukcja (opcode) zajmowała tradycyjnie jeden bajt (choć w nowszych wersjach Pythona się to zmienia)
|
|
|
Interpreter W kontekście Pythona, rozpocznij naukę
|
|
zawiera w sobie zarówno kompilator do bajtkodu, jak i Maszynę Wirtualną (PVM). Jego zadaniem jest emulacja komputera – udaje procesor, który rozumie język bajtkodu Pythona.
|
|
|
|
rozpocznij naukę
|
|
udostępnia interfejs wysokopoziomowy do pracy z wątkami. Kluczowa cecha implementacyjna: Wątki w Pythonie są natywnymi wątkami systemu operacyjnego
|
|
|
GIL (Global Interpreter Lock) rozpocznij naukę
|
|
mutex (blokada wzajemnego wykluczania), wbudowany w rdzeń interpretera CPython, Aby jakikolwiek wątek mógł wykonać instrukcję bajtkodu Pythona lub operować na obiektach Pythona, musi najpierw uzyskać (zablokować) GIL
|
|
|
Lock (Blokada Wzajemnego Wykluczania) rozpocznij naukę
|
|
Ochrona Sekcji Krytycznej (zapobieganie Race Conditions).
|
|
|
|
rozpocznij naukę
|
|
Ograniczanie współbieżności (np. max 5 połączeń do bazy danych).
|
|
|
|
rozpocznij naukę
|
|
Wymiana danych między wątkami/procesami (Producer-Consumer). FIFO
|
|
|
|
rozpocznij naukę
|
|
Mechanizm polimorfizmu parametrycznego umożliwiający tworzenie kodu (klas/funkcji) działającego na różnych typach danych, z zachowaniem bezpieczeństwa typów podczas analizy statycznej.
|
|
|
|
rozpocznij naukę
|
|
Obiekt (T = TypeVar('T')) pełniący rolę "zmiennej" dla typu. Służy do wiązania typów wejściowych i wyjściowych
|
|
|
|
rozpocznij naukę
|
|
Adnotacja oznaczająca homogeniczną listę elementów typu T. W Pythonie 3.9+ zastępowana przez list[T]
|
|
|
|
rozpocznij naukę
|
|
Adnotacja słownika mapującego klucze typu K na wartości typu V. W Pythonie 3.9+ zastępowana przez dict[K, V]
|
|
|
|
rozpocznij naukę
|
|
id(<zmienna>) zwraca identyfikator obiektu, na który wskazuje <zmienna>. Pozwala to na sprawdzenie czy 2 różne zmienne wskazują na ten sam obiekt.
|
|
|
|
rozpocznij naukę
|
|
Tworzy nowy kontener, ale wypełnia go starami referencjami do dzieci
|
|
|
|
rozpocznij naukę
|
|
Tworzy nowy kontener i rekurencyjnie nowe kopie wszystkich dzieci.
|
|
|
|
rozpocznij naukę
|
|
Przypisanie (=), Płytka Kopia (copy. copy(), [:]), Głęboka Kopia (copy. deepcopy())
|
|
|
Hermetyzacja w Pythonie (Encapsulation) rozpocznij naukę
|
|
Brak słów kluczowych private/protected. Ochrona opiera się wyłącznie na konwencji (_name) oraz mechanizmie Name Mangling (__name), a nie na blokadzie dostępu
|
|
|
|
rozpocznij naukę
|
|
Oznacza atrybut chroniony (umownie). Technicznie jest publiczny, ale sygnalizuje programiście: "nie dotykaj spoza klasy"
|
|
|
|
rozpocznij naukę
|
|
Uruchamia mechanizm Name Mangling. Interpreter zmienia nazwę na _Klasa__zmienna w czasie kompilacji. Służy do unikania kolizji nazw przy dziedziczeniu, a nie do bezpieczeństwa danych
|
|
|
|
rozpocznij naukę
|
|
mplementacja Protokołu Deskryptora. Pozwala zamienić metody (getter/setter) na atrybuty dostępne przez kropkę (obj.x), zachowując kompatybilność API bez zmiany kodu klienta
|
|
|