Moduł umożliwia sprawdzenie listy obiektów wbudowanych
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. >>>
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.
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): ...
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ł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.