Moduły systemowe

MODUŁ __builtin__ (Py2)

Moduł umożliwia sprawdzenie listy obiektów wbudowanych

MODUŁ __future__ (Py2, Py3)

https://docs.python.org/3/reference/simple_stmts.html#future

Udostępnianie właściwości języka niezgodnych z wcześniejszym zachowaniem jest możliwe poprzez import z modułu __future__. Ważne, że to nie jest normalny import, to jest zmiana sposobu interpretowania kodu przez Pythona. Takie wiersze muszą być na samej górze pliku.


# PEP 236 -- Back to the __future__
from __future__ import feature_name
from __future__ import nested_scopes    # Py2.1, PEP 227 (LGB na LEGB)
from __future__ import division         # Py2.2
from __future__ import generators       # Py2.2
from __future__ import print_function   # Py2.6
from __future__ import braces
# SyntaxError: not a chance
# To jest dowcip: nigdy nie będzie wprowadzone oznaczanie bloku
# instrukcji przez nawiasy jak w C/C++.
# The Python developers have a well-developed sense of humour!
from __future__ import annotations   # Py3.7

# W sesji interaktywnej można sprawdzić zawartość modułu.
>>> import __future__
>>> help(__future__)
>>> __future__.all_feature_names     # Py2.7.3
['nested_scopes', 'generators', 'division', 'absolute_import', 
'with_statement', 'print_function', 'unicode_literals']
>>> import __hello__   # dowcip
Hello world...
>>> import antigravity   # Py2.7, Py3
# Dowcip. Otwiera komiks w przeglądarce.
>>> from __future__ import barry_as_FLUFL   # Py3.1
# Dowcip. Nie działa a != b, tylko a <> b.
>>> 

MODUŁ io

https://docs.python.org/3/library/io.html

Moduł io dostarcza środków do obsługi różnych typów I/O. Są trzy główne typy I/O: text I/O, binary I/O, raw I/O. Obiekt należący do jednej z tych kategorii to obiekt pliku (file object), to mogą być prawdziwe pliki, gniazda (sockets), potoki (pipes).


import io

# Text I/O spodziewa się i tworzy stringi, czyli w Py3 potrzebne jest kodowanie.
f = open("myfile.txt", "r", encoding="utf-8")
f = io.StringIO("some initial text data")   # in-memory text stream

# Binary I/O spodziewa się 'bytes-like objects' i tworzy obiekty 'bytes'.
f = open("myfile.jpg", "rb")
f = io.BytesIO(b"some initial binary data: \x00\x01")   # in-memory binary stream

# Raw I/O jest zwykle używane jako niskopoziomowy element budujący
# dla pozostałych dwóch strumieni.

MODUŁ copy

https://docs.python.org/3/library/copy.html
copy - Shallow and deep copy operations.


import copy

# copy.copy(obj) -zwraca płytką kopię obj,
# copy.deepcopy(obj[, memo]) - zwraca głęboką kopię obj,
# copy.replace(obj, /, **changes) - tworzy nowy obiekt tego samego typu co obj,
#    zamieniając pola wartościami ze słownika 'changes' (Py3.13)

# Głęboka kopia niesie ze soba dwa problemy.
# 1. Obiekty rekurencyjne mogą powodować zapętlenie.
# 2. Głęboka kopia może skopiować aż za dużo elementów.
# Rozwiązaniem jest słownik "memo" obiektów już skopiowanych
# i kopiowanie określone przez użytkownika.

# Od Pythona 2.5 kopiowane są funkcje.

# Klasy mogą używać tego samego interfejsu do kontroli kopiowania
# co w przypadku modułu 'pickle'.
# W klasach można zdefiniować metody specjalne __copy__ i __deepcopy__,
# które opisują płytką i głęboką kopię instancji tej klasy.

# http://stackoverflow.com/questions/1500718/
# what-is-the-right-way-to-override-the-copy-deepcopy-operations-on-an-object-in-p

class MyClass(object):
    def __init__(self): ...
    def __copy__(self): ...
    def __deepcopy__(self, memo): ...

MODUŁ collections (Py2.4+, Py3)

https://docs.python.org/3/library/collections.html

https://docs.python.org/3/library/collections.abc.html

Moduł dostarcza specjalistyczne kontenerowe typy danych, które są alternatywą dla ogólnych wbudowanych kontenerów, dict, list, set, tuple, .

W Pythonie 2.6 dodano abstrakcyjne klasy bazowe dla kontenerów (ABCs, PEP 3119). Od Pythona 3.3 klasy bazowe są w podmodule collections.abc.

Kolekcja abstrakcyjnych klas bazowych: Container, Hashable, Iterable, Iterator (Iterable), Reversible (Iterable), Generator (Iterable), Sized, Callable, Collection (Sized, Iterable, Container), Sequence (Reversible, Collection), MutableSequence (Sequence), ByteString (Sequence), Set (Collection), MutableSet (Set), Mapping (Collection), MutableMapping (Mapping), MappingView (Sized), ItemsView (MappingView, Set), KeysView (MappingView, Set), ValuesView (MappingView, Collection), Buffer.

Dzięki ABCs możemy pytać, czy klasy lub instancje posiadają pewną funkcjonalność.


import collections

size = None
if isinstance(my_variable, collections.abc.Sized):   # istnieje __len__
    size = len(my_variable)

MODUŁ argparse (Py2.7, Py3.2+)

Moduły getopt, optparse, argparse [PEP 389] służą do parsowania argumentów podanych w wierszu poleceń. Moduł getopt przypomina getopt() z biblioteki języka C, przez co przydaje się do pisania prototypów, które będą przepisywane do C. Do nowych skryptów Pythona zaleca się używanie najnowszego modułu argparse.