3. Biblioteka standardowa Pythona



Podobne dokumenty
Kurs języka Python Wykład 6. Pliki tekstowe Pliki rekordów Pliki CSV Strumienie

METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02

Współczesne Narzędzia Obliczeniowe - Python

Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w

lekcja 8a Gry komputerowe MasterMind

1 Podstawy c++ w pigułce.

Język skryptowy: Laboratorium 1. Wprowadzenie do języka Python

Python wprowadzenie. Warszawa, 24 marca PROGRAMOWANIE I SZKOLENIA

Języki programowania wysokiego poziomu. PHP cz.2.

Język Python (2) Język Python (2) 1/36

Zaawansowany kurs języka Python

J ezyk AWK Kurs systemu UNIX

Programowanie proceduralne INP001210WL rok akademicki 2018/19 semestr letni. Wykład 6. Karol Tarnowski A-1 p.

Część 4 życie programu

Podstawy programowania skrót z wykładów:

utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy,

JAVAScript w dokumentach HTML (1) JavaScript jest to interpretowany, zorientowany obiektowo, skryptowy język programowania.

Języki skryptowe w programie Plans

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

TOPIT Załącznik nr 3 Programowanie aplikacji internetowych

Podstawy i języki programowania

Podstawy i języki programowania

#include <stdio.h> int main( ) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

1 Podstawy c++ w pigułce.

Programowanie obiektowe

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Cw.12 JAVAScript w dokumentach HTML

Bash - wprowadzenie. Bash - wprowadzenie 1/39

2 Przygotował: mgr inż. Maciej Lasota

Temat 1: Podstawowe pojęcia: program, kompilacja, kod

JĘZYK SHELL JEST PEŁNYM JĘZYKIEM PROGRAMOWANIA

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 12. Karol Tarnowski A-1 p.

JAVAScript w dokumentach HTML - przypomnienie

Smarty PHP. Leksykon kieszonkowy

Algorytmika i Programowanie VBA 1 - podstawy

Liczby pseudolosowe. #include <stdio.h> #include <stdlib.h> int main() { printf("%d\n", RAND_MAX); return 0; }

Język C++ wykład VIII

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2015

#include <stdio.h> void main(void) { int x = 10; long y = 20; double s; s = x + y; printf ( %s obliczen %d + %ld = %f, Wynik, x, y, s ); }

XML i nowoczesne technologie zarządzania treścią 2007/08

Uwagi dotyczące notacji kodu! Moduły. Struktura modułu. Procedury. Opcje modułu (niektóre)

1 Przygotował: mgr inż. Maciej Lasota

Programowanie i struktury danych

System operacyjny Linux

Podstawy Programowania C++

C++ wprowadzanie zmiennych

Ćwiczenie: JavaScript Cookies (3x45 minut)

Wstęp do programowania

Wstęp do programowania. Różne różności

JAVAScript w dokumentach HTML (1)

Podstawy Programowania Podstawowa składnia języka C++

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Programowanie w języku Python. Grażyna Koba

Skrypty i funkcje Zapisywane są w m-plikach Wywoływane są przez nazwę m-pliku, w którym są zapisane (bez rozszerzenia) M-pliki mogą zawierać

Dynamiczne przetwarzanie stron. dr Beata Kuźmińska-Sołśnia

Podstawy programowania C. dr. Krystyna Łapin

OPERACJE WEJŚCIA / WYJŚCIA. wysyła sformatowane dane do standardowego strumienia wyjściowego (stdout)

Pytania sprawdzające wiedzę z programowania C++

Podstawy i języki programowania

Tabela wewnętrzna - definicja

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

1. Wprowadzanie danych z klawiatury funkcja scanf

Podstawy Programowania ELEMENTY PROGRAMU i TYPY DANYCH

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44

Komentarze w PHP (niewykonywane fragmenty tekstowe, będące informacją dla programisty)

Wykład II. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Wskaźnik może wskazywać na jakąś zmienną, strukturę, tablicę a nawet funkcję. Oto podstawowe operatory niezbędne do operowania wskaźnikami:

Elementy metod numerycznych - zajęcia 9

Temat: Dynamiczne przydzielanie i zwalnianie pamięci. Struktura listy operacje wstawiania, wyszukiwania oraz usuwania danych.

Programowanie strukturalne. Opis ogólny programu w Turbo Pascalu

Plan podstawowe operacje we/wy

Programowanie, algorytmy i struktury danych

Zaawansowany kurs języka Python

System operacyjny Linux

MATERIAŁY DO ZAJĘĆ II

INFORMATYKA Studia Niestacjonarne Elektrotechnika

I. Podstawy języka C powtórka

PHP: bloki kodu, tablice, obiekty i formularze

Zanim zaczniemy GNU Octave

Podstawy programowania. Podstawy C# Tablice

Spis treści. Funkcje. 1 Funkcje 1.1 Zadanie Zadanie Zadanie Zadanie Zadanie Zadanie Zadanie 7

Oczywiście plik musi mieć rozszerzenie *.php

Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char

Wyrażenia regularne. Wyrażenia regularne 1/41

Zajęcia nr 1 Podstawy programowania. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Kurs rozszerzony języka Python

Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41

Liczby losowe i pętla while w języku Python

Wstęp do systemów wielozadaniowych laboratorium 19 awk

1 P roste e t ypy p d a d n a ych c - c ąg ą g d a d l a szy 2 T y T py p z ł z o ł żo ż ne e d a d n a ych c : T BLICE

Łącza nienazwane(potoki) Łącza nienazwane mogą być używane tylko pomiędzy procesami ze sobą powiązanymi.

Programowanie komputerowe. Zajęcia 1

Instytut Fizyki Politechniki Łódzkiej Laboratorium Metod Analizy Danych Doświadczalnych Ćwiczenie 3 Generator liczb losowych o rozkładzie Rayleigha.

Wstęp do Programowania potok funkcyjny

Powłoka I. Popularne implementacje. W stylu sh (powłoki zdefiniowanej w POSIX) W stylu csh. bash (najpopularniejsza) zsh ksh mksh.

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

Zmienne powłoki. Wywołanie wartości następuje poprzez umieszczenie przed nazwą zmiennej znaku dolara ($ZMIENNA), np. ZMIENNA=wartosc.

Zofia Kruczkiewicz, Programowanie obiektowe - java, wykład 2 1

Transkrypt:

Gdańsk, 2014

i plików tekstowych Użyteczne typy danych Biblioteka numeryczna Operacje systemowe i programowanie współbieżne Sieci Inne Standardowa biblioteka Pythona to ok. 200 modułów i ok. 100 podmodułów. Oferowana przez nie funkcjonalność obejmuje wiele zagadnień spotykanych w trakcie programowania. Większość z oferowanych przez moduły funkcjonalności ma postać klas, których metody realizują interesujące nas funkcje.

i plików tekstowych Użyteczne typy danych Biblioteka numeryczna Operacje systemowe i programowanie współbieżne Sieci Inne umożliwiają m.in. następujące moduły: string; formatowanie tekstu, klasyfikowanie znaków; re; wyrażenia regularne. xml i html; parsery plików xml-owych i html-owych; configparser; parser plików konfiguracyjnych; argparse; parser argumentów linii komend.

i plików tekstowych Użyteczne typy danych Biblioteka numeryczna Operacje systemowe i programowanie współbieżne Sieci Inne są możliwe dzięki następującym modułom: os.path; operacje na ścieżkach; tempfile; pliki tymczasowe; shutil; kopiowanie i przenoszenie plików, katalogów wraz z zawartością itd. sqlite3; interfejs do bazy SQLite. zlib i gzip; kompresja gzip; bz2; kompresja bz2; zipfile; kompresja zip. tarfile; pliki tar.

i plików tekstowych Użyteczne typy danych Biblioteka numeryczna Operacje systemowe i programowanie współbieżne Sieci Inne Następujące moduły zawierają rozmaite użyteczne typy danych, które nie zostały wbudowane w Pythona: datetime; data i czas; calendar; kalendarze; heapq; kolejki priorytetowe; array; tablice wartości tego samego typu liczbowego; queue; zwykłe kolejki (FIFO).

i plików tekstowych Użyteczne typy danych Biblioteka numeryczna Operacje systemowe i programowanie współbieżne Sieci Inne Obliczenia matematyczne i numeryczne wspierają m.in. następujące moduły: numbers; abstrakcyjna hierarchia liczb; math; standardowe funkcje i stałe matematyczne; cmath; standardowe funkcje matematyczne dla liczb zespolonych; decimal; ułamki dziesiętne; fractions; ułamki zwykłe; random; generowanie liczb losowych o zadanych rozkładach.

i plików tekstowych Użyteczne typy danych Biblioteka numeryczna Operacje systemowe i programowanie współbieżne Sieci Inne Dostęp do funkcji systemu operacyjnego dają następujące moduły: os; rozmaite funkcje systemowe; sys; rozmaite parametry i funkcje systemowe; time; odczyt i konwersja czasu. Możliwe jest także programowanie współbieżne, które jest wspierane przez moduły: threading; obsługa wątków; multiprocessing; obsługa wielu procesorów; subprocess; obsługa procesów potomnych.

i plików tekstowych Użyteczne typy danych Biblioteka numeryczna Operacje systemowe i programowanie współbieżne Sieci Inne Większość z popularnych usług sieciowych jest dostępna poprzez moduły Pythona: webbrowser i http; prosta przeglądarka www oraz obsługa protokołu http; urllib; dostęp do stron www poprzez adresy url; telnetlib; protokół telnet; ssl i socket; szyfrowane i zwykłe połączenia sieciowe; smtpd, smtplib, poplib, mailbox, imaplib, email; poczta elektroniczna; ftplib; protokół ftp; cgi i cgitb; skrypty CGI.

i plików tekstowych Użyteczne typy danych Biblioteka numeryczna Operacje systemowe i programowanie współbieżne Sieci Inne Oprócz wcześniej omówionych, Python wspiera także: przetwarzanie dźwięków (wave); testowanie jednostkowe (unittest); pomiar czasu wykonania programów (timeit); programowanie funkcjonalne (itertools, functools i operator); oprogramowywanie interfejsów (curses i tkinter). (I wiele, wiele innych... )

re argparse Wyrażenia regularne to napisy, które są wzorcami dla innych napisów. Na wyrażeniach regularnych wykonywane są dwie operacje: dopasowanie napisu do wzorca; modyfikacja napisu wg wzorca. Dopasowanie następuje zawsze w pierwszym możliwym miejscu i ma charakter zachłanny. Moduł re udostępnia programiście obie powyższe operacje (i kilka innych, dodatkowych).

re argparse Wyrażenia regularne są zbudowane ze znaków zwykłych i specjalnych. Podczas dopasowywania znaki zwykłe muszą wystąpić w dopasowywanym napisie, a specjalne są zastępowane przez zwykłe zgodnie z ich znaczeniem: ^ i $; oznacza początek i koniec napisu; \d, \s i.; oznaczają cyfrę, biały znak i dowolny znak; ; oznacza alternatywę tego, co poprzedza i następuje po tym znaku; \; znak następujący po \ staje się zwykłym znakiem;

re argparse [lista] ([^lista]); oznacza znak z (spoza) podanej listy znaków; {x}, {x,} i {x,y}; oznacza, że znak poprzedzający musi wystąpić dokładnie x razy, co najmniej x razy i co najmniej x ale nie więcej niż y razy;?, * i +; równoważne z {0,1}, {0,} i {1,}; ( i ); grupują ciągi znaków, po to by inne znaki specjalne można było zastosować do całej grupy; \numer; oznacza dopasowaną grupę o podanym numerze.

re argparse Moduł re udostępnia m.in. następujące funkcje: compile( w ); zwraca skompilowaną postać wyrażenia regularnego (przyśpiesza obliczenia, jeśli wielokrotnie korzystamy z tego samego wzorca); search( w,n ); zwraca informację o tym, czy napis n zawiera fragment pasujący do wzorca w; match( w,n ); zwraca informację o tym, czy napis n zawiera prefiks pasujący do wzorca w;

re argparse split( w,n ); dzieli napis n na fragmenty rozdzielone napisami pasującymi do wzorca w; findall( w,n ); zwraca wszystkie możliwe dopasowania napisu n do wzorca w; sub( w1,w2,n ); zwraca napis powstały z n poprzez zamianę wszystkich fragmentów pasujących do w1 zgodnie z zasadą opisaną w w2.

re argparse Wynikiem dopasowania jest obiekt typu MatchObject lub None, o ile dopasowanie się nie udało. Obiekty typu MatchObject mają m.in. następujące metody: group( n ); zwraca grupę dopasowaną do n-tego nawiasu (cały dopasowany fragment dla n równego 0); start( n ) i end( n ); zwraca indeks pierwszego i ostatniego znaku we fragmencie dopasowanym do n-tego nawiasu.

re argparse Poniższy program to prosty kalkulator z pamięcią. #!/usr/bin/env python3 # -*- coding: utf-8 -*- from re import search from sys import stdin zmienne = {} def wykonaj( linia ): w = "^\s*([a-z][a-z0-9]*)\s*=\s*([+-]?[0-9]+)\s*$" o = search( w,linia.lower() )

re argparse if o: zmienne[o.group( 1 )] = int( o.group( 2 ) ) else: try: print( eval( linia.lower(),zmienne ) ) except: print( "Błąd w wyrażeniu",linia ) while True: try: wykonaj( input() ) except EOFError: break

re argparse Moduł argparse ułatwia pisanie programów, które korzystają z parametrów wiersza poleceń. Zadanie programisty sprowadza się do określenia parametrów i ich opisu. Resztę robi klasa ArgumentParser znajdująca się w module argparse. Moduł argparse jest dostępny od wersji 3.2; wcześniej jego funkcje pełnił moduł optparse.

re argparse Aby skorzystać z klasy ArgumentParser należy utworzyć jej instancję, podając konstruktorowi kilka parametrów: description; napis wyświetlany przed listą parametrów; epilog; napis wyświetlany po liście parametrów; usage; opis sposobu użycia programu (domyślnie: generowany automatycznie); prog; nazwa programu (domyślnie: sys.argv[0]). (Powyższa lista obejmuje wyłącznie ważniejsze z parametrów.)

re argparse Następnie, dla każdego parametru, który nasz program ma obsługiwać, należy wywołać funkcję add_argument(), podając jej następujące informacje: nazwę parametru (lub listę nazw, w przypadku parametrów opcjonalnych, zaczynających się od znaku minusa); action; czynność wykonywana, jeśli parametr zostanie użyty (domyślnie: zapamiętanie wartości); nargs; z ilu fragmentów składa się parametr; default; wartość domyślna parametru; type; typ parametru; help; krótki opis parametru. (Powyższa lista także obejmuje tylko ważniejsze z możliwych do określenia informacji.)

re argparse Ostatnim krokiem jest wywołanie funkcji parse_args(), która: sprawdza, czy podano poprawne parametry (jeśli nie, kończy działanie programu i wyświetla odpowiednie komunikaty); ustala, jakie wartości zostały przypisane parametrom; zwraca obiekt typu Namespace, który przechowuje w odpowiednich polach wartości sparsowanych argumentów. Przekazując funkcji parse_args() obiekt x jako argument namespace można spowodować, że tworzone przez nią pola zostaną utworzone wewnątrz x-a.

re argparse Poniższy program, w zależności od podanego parametru, zwraca pierwszą lub drugą z przekazanych mu liczb. #!/usr/bin/env python3 # -*- coding: utf-8 -*- from argparse import * parser = ArgumentParser( \ description = "Program zwraca a lub b" ) parser.add_argument( "a",type = int, \ help = "pierwsza liczba" )

re argparse parser.add_argument( "b",type = int, \ help = "druga liczba" ) parser.add_argument( "-p",type = bool,default = True,\ help = "czy zwrócić pierwszą liczbę" ) argumenty = parser.parse_args() print( argumenty.a if argumenty.p else argumenty.b )

configparser csv tempfile Moduł configparser udostępnia klasę ConfigParser, której zadaniem jest parsowanie plików konfiguracyjnych. Dopuszczalne są wyłącznie pliki tekstowe, które składają się z sekcji o nagłówkach postaci [nazwa sekcji], wewnątrz których znajdują się napisy postaci zmienna = wartość lub zmienna : wartość. W nazwach sekcji rozróżniane są małe/duże litery; w nazwach zmiennych nie. Dopuszczalne są komentarze, rozpoczynające się od znaku # lub ;.

configparser csv tempfile Obiekty typu ConfigParse udostępniają m.in. następujące funkcje: sections() (options( s )); zwraca listę sekcji (zwraca listę zmiennych w sekcji s); add_section( s ) (remove_section( s )); tworzy nową (usuwa) sekcję s; has_section( s ); sprawdza, czy sekcja s istnieje; has_option( s,o ) (remove_option( s,o )); sprawdza, czy zmienna o występuje w (usuwa zmienną o z) sekcji s; get( s,o ) (set( s,o,v )); zwraca (zmienia) wartość zmiennej o z sekcji s (na v); read( f ) (write( f )); wczytuje plik o nazwie f (zapisuje konfigurację do pliku f).

configparser csv tempfile Moduł csv ułatwia parsowanie plików w formacie CSV (Comma Separated Values), które są wykorzystywane m.in. przez Excela. Klasa reader jest odpowiedzialna za odczyt plików CSV; klasa writer umożliwia zapisywanie danych w tym formacie. Plik, z którego pobieramy (do którego zapisujemy) dane podajemy jako argument konstruktora. Obiekt o typu reader jest iteratorem; każde wywołanie next( o ) zwraca kolejny wczytany wiersz (jako tablicę napisów). Obiekty typu writer posiadają metodę writerow(), która zapisuje tablicę napisów jako wiersz w pliku w formacie CSV.

configparser csv tempfile Moduł tempfile ułatwia tworzenie plików i katalogów tymczasowych. Są one tworzone w taki sposób, by przypadkiem nie usunąć żadnego z już istniejących plików/katalogów. Moduł tempfile udostępnia funkcję TemporaryDirectory(), która zwraca ścieżkę do utworzonego katalogu tymczasowego. Po wykorzystaniu, katalog wraz z zawartością zostanie automatycznie usunięty. Udostępnia on także funkcję TemporaryFile(), która zwraca obiekt, który zachowuje się jak plik i który zostanie automatycznie usunięty po zamknięciu.

multiprocessing queue threading Moduł multiprocessing ułatwia pisanie programów wieloprocesowych. Udostępnia on kilka klas, które można wykorzystać w tym celu: Process; instancje tej klasy to procesy, z których składa się program; Queue; instancje tej klasy to kolejki umożliwiające bezpieczne przekazywanie danych pomiędzy procesami; Pipe; instancje tej klasy to potoki, także wykorzystywane do bezpiecznego przekazywania danych pomiędzy procesami.

multiprocessing queue threading Nowy proces tworzymy wywołując konstruktor klasy Process i przekazując mu parametry target (procedura, którą proces będzie wykonywał) i args (argumenty przekazane do procedury). Procesy posiadają m.in. następujące metody: p.start(); uruchamia proces p; p.is_alive(); sprawdza, czy proces p nadal działa; p.join(); wstrzymuje bieżący proces do momentu, aż proces p się zakończy; p.terminate(); kończy działanie procesu p.

multiprocessing queue threading Kolejki umożliwiają wstawianie elementów na koniec (put()) i usuwanie ich z początku (get()). put() wstawia element do kolejki, o ile nie jest ona pełna; jeśli jest pełna, wstrzymuje proces do momentu, aż zwolni się miejsce. get() pobiera element z kolejki, o ile nie jest ona pusta; jeśli jest pusta, wstrzymuje proces do momentu, aż pojawi się tam jakiś element. Obie funkcje są dostępne w wersji nieblokującej (put_no_wait() i get_no_wait()); jeżeli nie można od razu pobrać/wstawić elementu, pojawia się wyjątek queue.empty/queue.full.

multiprocessing queue threading Poniższy program sortuje tablicę liczb, stosując zrównoleglone scalanie. #!/usr/bin/env python3 # -*- coding: utf-8 -*- from multiprocessing import * def sortuj( tablice ): while True: try: t1 = tablice.get_no_wait() except: return try: t2 = tablice.get_no_wait() except: tablice.put( t1 ) return tablice.put( scal( t1,t2 ) )

multiprocessing queue threading def scal( t1,t2 ): t,i1,i2 = [],0,0 while i1 < len( t1 ) and i2 < len( t2 ): if t1[i1] < t2[i2]: t.append( t1[i1] ) i1 += 1 else: t.append( t2[i2] ) i2 += 1 return \ t + (t2[i2:] if i1 == len( t1 ) else t1[i1:])

multiprocessing queue threading tablice = Queue() for i in range( 500000 ): tablice.put( [1000000 - i] ) tablice.put( [i] ) p1 = Process( target = sortuj,args = ( tablice, ) ) p2 = Process( target = sortuj,args = ( tablice, ) ) p1.start() p2.start() p1.join() p2.join() while tablice.qsize() > 1: tablice.put( scal( tablice.get(),tablice.get() ) )

multiprocessing queue threading Moduł queue udostępnia klasę Queue, którą można wykorzystać do komunikacji międzywątkowej. Moduł queue udostępnia także stosy (LifoQueue) i kolejki priorytetowe (PriorityQueue). Sposób działania kolejek modułu queue jest niemal identyczny z działaniem kolejek modułu multiprocessing (z punktu widzenia programisty te klasy są niemal identyczne).

multiprocessing queue threading Moduł threading ułatwia tworzenie programów wielowątkowych. Wątki różnią się od procesów tylko tym, że mają wspólny obszar danych. Tworzenie i korzystanie z wątków jest podobne do tworzenia i korzystania z procesów zmienia się jedynia nazwa klasy z Process na Thread.

bisect array Moduł bisect udostępnia funkcje realizujące przeszukiwanie binarne: bisect_left( t,x ); zwraca indeks pozycji, na którą powinien być wstawiony element x, aby posortowana tablica t pozostała taką; jeśli x już jest w tablicy, wskazane zostanie miejsce następujące przed pierwszym jego wystąpieniem; bisect_right( t,x ); zwraca indeks pozycji, na którą powinien być wstawiony element x, aby posortowana tablica t pozostała taką; jeśli x już jest w tablicy, wskazane zostanie miejsce następujące po ostatnim jego wystąpieniu.

bisect array Moduł array umożliwia tworzenie tablic, których wszystkie elementy mają ten sam elementarny typ. Udostępnia on klasę array, która zachowuje się jak lista, ale zużywa mniej miejsca w pamięci. Typ elementów podajemy jako argument w konstruktorze. Dopuszczalne są następujące typy: u ; znak w unikodzie; b, B, h, H, i, I, l, L ; liczba całkowita typu char, unsigned char, short, unsigned short, int, unsigned, long, unsigned long; f, d ; liczba rzeczywista typu float, double.

math/cmath random Moduły math i cmath udostępniają standardowe funkcje i stałe matematyczne operujące na liczbach rzeczywistych i zespolonych. Moduł math zawiera definicje stałych pi i e. Oprócz tego udostępnia on następujące funkcje: zaokrąglenie do bezpośrednio wyższej (ceil()) i bezpośrednio niższej liczby całkowitej (floor()); wykładnicza (exp()) i logarytmiczna (log()); pierwiastek (sqrt()); funkcje trygonometryczne (sin(), cos() itd.) i odwrotne do nich (asin(), acos() itd.);

math/cmath random funkcje hiperboliczne (acosh(), acosh() itd.); funkcje specjalne (gamma() itd.). Większość z powyższych funkcji jest dostępna w wersji dla liczb zespolonych w module cmath. Zawiera on także funkcje specyficzne dla liczb zespolonych takie, jak argument (phase()) czy też konwersja do postaci biegunowej (polar()).

math/cmath random Moduł random udostępnia rozmaite funkcje generujące liczby pseudolosowe. Należą do nich m.in.: randint( a,b ); zwraca losową liczbę całkowitą z podanego przedziału; choice( z ); zwraca losowy element zbioru z; shuffle( l ); zmienia w losowy sposób kolejność elementów listy l; sample( z,r ); zwraca próbkę r różnych losowych elementów ze zbioru z; random(); zwraca liczbę losową z przedziału [0, 1].

math/cmath random Możliwe jest także losowanie liczb zgodnie z zadanym rozkładem prawdopodobieństwa: rozkład równomierny na zadanym przedziale uniform( a,b ); rozkład beta betavariate( a,b ); rozkład gamma gammavariate( a,b ); rozkład wykładniczy expovariate( l ); rozkład normalny normalvariate( m,s ).

os i sys timeit Moduły os i sys dają programiście dostęp do rozmaitych zmiennych i funkcji systemowych. Moduł sys zawiera m.in. następujące zmienne i funkcje: argv; argumenty z linii poleceń; exit( w ); kończy działanie programu, przekazując systemowi w jako rezultat jego wykonania; path; lista katalogów, które są przeszukiwane w momencie szukania modułu do załadowania; stdin, stdout i stderr; standardowe wejście, wyjście i wyjście błędów; version; wersja używanego interpretera Pythona.

os i sys timeit Moduł os zawiera m.in. następujące zmienne i funkcje: funkcje operujące na identyfikatorze użytkownika, jego grupie, identyfikatorze procesu itd.; niskopoziomowe funkcje operujące na plikach; funkcje operujące na plikach i katalogach (chdir(), getcwd(), mkdir(), remove(), rename(), rmdir() i inne); funkcje do tworzenia procesów potomnych (execl(), fork(), kill(), nice(), spawnl() i inne).

os i sys timeit Moduł timeit udostępnia funkcję timeit, która umożliwia badanie efektywności krótkich fragmentów kodu. Aby sprawdzić, ile czasu zajmuje wykonanie interesującego nas fragmentu kodu, należy wykonać tę funkcję, przekazując jej jako argumenty kod do wykonania i liczbę powtórzeń.

os i sys timeit Poniższy program wczytuje kod, który ma zbadać, i mierzy czas jego wykonania. #!/usr/bin/env python3 # -*- coding: utf-8 -*- from timeit import timeit print( \ "Podaj kod, którego efektywność mam zmierzyć." ) print( "Czas działania kodu:", \ timeit( stmt = input(),number = 1000 ) / 1000 )