• Nie Znaleziono Wyników

Danologia. Wstęp do języka. dr inż. Jarosław Drapała

N/A
N/A
Protected

Academic year: 2022

Share "Danologia. Wstęp do języka. dr inż. Jarosław Drapała"

Copied!
23
0
0

Pełen tekst

(1)

Wstęp do języka

dr inż. Jarosław Drapała

Danologia

(2)

•proceduralny

•funkcjonalny

•obiektowy

wieloparadygmatowy

•przenośność programów

•łączy różne języki

•integracja komponentów

ogólnego przeznaczenia

otwarty dostęp

•„skryptowy – bo tryb programowania jest szybki i elastyczny

zorientowany obiektowo skryptowy język

„uniwersalny

język programowania”

T WÓ RCY MO G LI TO ZAP LAN O W AĆ

Cechy

(3)

czytelny kod prosta składnia

szybkość programowania

„wykonywalny pseudokod”

M U SIE LI SIĘ BARDZ O PO ST ARAĆ

produktywność programisty

•import this

jakość oprogramowania łatwy do nauczenia

•wbudowane narzędzia

•dedykowane biblioteki

bogate zasoby

K O N SE KWE N CJ E

szybkie prototypowanie

Cechy

(4)

T AK WY SZ ŁO

prędkość działania programów

Python

≤ języki kompilujące

na binarny maszynowy kod

zbyt szybka ewolucja

konieczność nadążania za

zmianami

zależność od kaprysów użytkowników

jak każdy produkt otwartoźródł

owy (ang.

open source)

dwie linie

2.X

3.X

Wady

(5)

S POS OB Y T EC HNI CZNE O SIĄ G N IĘ CIA CE LU

Zasady działania

dynamiczne typy danych

•brak deklaracji typu

•automatyczne

zarządzanie pamięcią

kompilacja

„w locie”

•kompilacja do kodu bajtowego

wszystko jest obiektem

(6)

Model wykonywania kodu

plik.py kod źródłowy

plik.pyc kod bajtowy

silnik wykonawczy (ang. runtime engine)

interpreter

Maszyna wirtualna Pythona

(ang. Python Virtual Machine – PVM)

kompilacja

__pycache__

niezależna od platformy reprezentacja kodu źródłowego

interpretacja wykonanie

aplikacja

kod skompilowany w C ......

(7)

Model wykonywania kodu

plik.py kod źródłowy

plik.pyc

kod bajtowy PVM aplikacja

Implementacja Pythona

CPython

standardowa Implementacja

W ANSI C

PyPy

kompiluje do kodu bajtowego

C, Javy

Stackless

programowanie współbieżne

Jython

...

(8)

Model wykonywania kodu

Zamrożone pliki binarne (ang. frozen binaries)

bajtowykod

PVM

pliki pomocnicze

• py2exe (Windows)

• pyInstaller (także Linux i macOS)

• py2app (macOS)

• freeze

• cx_freeze

(9)

Uruchamianie programów

• Sesja interaktywna

• eksperymentowanie

• testowanie

• IDE / IDLE

(Integrated Development and Learning Environment)

• środowisko programistyczne z GUI (tkinter)

• łączy różne zadania programistyczne w jeden widok

edycja, przegląd, debugowanie

• wady: mniejsza kontrola nad aspektami uruchamiania

(10)
(11)

https://jupyter.org/hub

https://nbviewer.jupyter.org/

https://www.anaconda.com/

(12)
(13)
(14)
(15)

Typ Literał – wyrażenie generujące obiekt

liczba 3.14 3+4j 2e-3

łańcuch

znaków 'noszę stringi' "czytam 'Fakt'" wyrażenia formatujące split, ','.join(), replace

lista [1, 2, 'trzy', 4j, ["pięć"]] widoki, wycinki sort, sorted, index, count, append, ...

słownik {'imię':'Bożena', 'wiek':None, 'zarobki':5900, 'karana':True} macierze rzadkie

krotka (255, 255, 0)

plik open('apsztyfikanci.txt', 'a') pickle, json

zbiór set('rabarbar') & | - > ^

inne Boolean None

Wbudowane typy danych

(16)

Wbudowane typy danych

• uporządkowane kolekcje obiektów

• stringi, listy, krotki, pliki

sekwencje

• mapowania

• słowniki

odwzorowania

mutowalne (ang. mutable)

• można zmieniać w miejscu

• listy, słowniki, zbiory

niemutowalne (ang. immutable)

• nie da się zmienić w miejscu

• liczby, stringi, krotki

(17)

Czym jest obiekt

Miejsce w pamięci Desygnator typu

Licznik referencji

obiekt

zmienne = uniwersalne referencje do obiektów typ ma obiekt

zmienna

przypisania vs widoki

(18)

Instrukcje

przypisania

a, b =first, *lastx = 'kolejka' a, b = b, a

rozgałęzienia

if war1:

instr1 elif war2:

instr2 else:

instrN

emulacja instrukcji switch słownikiem

Funkcje

def razy(arg1, arg2):

return arg1 * arg2

polimorfizm

(19)

Instrukcje

powtórzenia

while test:

instr1

else: # jeśli pętli nie zakończył break instr2

for elem in obiekt:

instr1 else:

instr2 range

enumeratezip

filtermap reduce

(20)

Protokół iteracji

Narzędzia iteracyjne / kontekst iteracyjny

pętla for

złożenia (np. listy składane)

odwzorowania (ang. mappings), np. słowniki

Obiekt iterowalny (ang. iterable)

listy

pliki

generatory

Obiekt iteratora (ang. iterator)

next() next() next() ...

StopIteration

(21)

Złożenia

lista składana (ang. list comprehension)

• słownik składany

• zbiór składany

• wyrażenie generatora

[ wyrażenie for cel in obiekt iterowalny if warunek ]

(22)

Funkcje

Funkcje nazwane

def nazwa(args):

return args

nazwa.atrybut = wartość x = nazwa('kontrola')

instrukcja

Funkcje anonimowe

f = lambda x, y: x * y

wyrażenie

•global

•nonlocal

Zasięgi

•niemutowalne przez wartość

•mutowalne przez referencję Przekazywanie

argumentów

(23)

Własne typy obiektów

class Student:

def __init__(self, imię, wydział):

self.imię = imię def zapisz(self, kurs):

...

Cytaty

Powiązane dokumenty

patrzymy w prawo: jeśli jest tam nawias otwierający okrągły '(', to będzie to funkcja (odczytujemy liczbę i typ parametrów); jeśli będzie tam nawias otwierający kwadratowy '[',

Prognozowanie rozwoju uszkodzeń zmęczeniowych w przekładniach zębatych już na etapie ich projektowania umożliwia określenie czasu przydatności danej przekładni do pracy w

Postuluje się także, podobnie jak w przypadku zestawu pojazdów drogowych, wprowadzenie pasm kompatybilności, czyli dopuszczalnych zmian wartości wskaźnika hamowania w funkcji

W pracy analizowano wpływ energii uderzenia na charakter oraz obszar uszkodzenia materiałów kompozytowych w aspekcie dalszej ich eksploatacji oraz możliwość

Jeśli tylko założenia są spełnione, to rankingi zgodności rozkładów przeprowadzane są niezależnie według trzech kryteriów, z użyciem zmodyfikowanej statystyki

1 Jeżeli wszystkie wartości wykorzystywane w obliczeniach są tego samego typu, wynik też jest tego typu (z wyjątkiem operacji porównania). 2 Wartości różnych typów są

– osoba, która poprawia zaliczenie (końcowe lub cząstkowe), może uzyskać co najwyżej ocenę bardzo dobrą.

rok akademicki 2019/20 semestr zimowy..