Moduł umożliwia sprawdzenie listy obiektów wbudowanych
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!
# 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 strunieni.
import copy # Są tylko dwie metody. x = "dowolny obiekt" y = copy.copy(x) # płytka kopia x z = copy.deepcopy(x) # głęboka kopia x # 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ł dostarcza specjalistyczne kontenerowe typy danych.
W Pythonie 2.6 dodano abstrakcyjne klasy bazowe (ABCs, PEP 3119) [w nawiasach pokazane dziedziczenie]:
Dzięki ABCs możemy pytać, czy klasy lub instancje posiadają pewną funkcjonalność.
import collections size = None if isinstance(my_variable, collections.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.