Interpreter Pythona posiada pewną liczbę funkcji wbudowanych, które są dostępne w dowolnym momencie wykonania programu. Funkcje te zostaną wymienione w kolejności alfabetycznej.
Dla przykładu wyrażenie "import mielonka" w rezultacie powoduje
następujące wywołanie: __import__('mielonka', globals(),
locals(), []); natomiast wyrażenie "from mielonka.szynka
import jajka" wywołuje "__import__('mielonka.szynka', globals(),
locals(), ['jajka'])". Należy zwrócić uwagę na fakt, iż pomimo
przekazywania zmiennych locals() oraz ['jajka'] jako
argumentów, funkcja __import__() nie ustawia zmiennej
lokalnej o nazwie jajka. Wykonuje to kod wygenerowany dla celów
wyrażenia importującego. W rzeczywistości standardowa implementacja
nie używa w ogóle argumentu locals, a argument globals
jest używany wyłącznie dla określenia kontekstu pakietu dla wyrażenia
import.
Gdy zmienna nazwa jest postaci pakiet.moduł zwykle
zwracany jest pakiet z najwyższego poziomu (nazwa przed pierwszą
kropką), nie zaś moduł o nazwie nazwa. Jednakże gdy zostanie
podana niepusty argument z_listy, zwracany jest moduł o nazwie
nazwa. Dzieje się tak dla zachowania kompatybilności kodu
binarnego generowanego dla różnych rodzajów wyrażeń importu. Dla
wywołania "import mielonka.szynka.jajka" w przestrzeni nazw
wyrażenia importującego musi zostać umieszczony pakiet z najwyższego
poziomu o nazwie szynka, lecz jeśli wywołamy "from
mielonka.szynka import jajka" musi zostać użyty podpakiet
mielonka.szynka dla odnalezienia zmiennej o nazwie
jajka.
Jako obejście tego zachowania można użyć funkcji getattr() celem wydobycia odpowiednich komponentów. Dla przykładu, można zdefiniowac następującą funkcję pomocniczą:
import string
def my_import(name):
mod = __import__(name)
components = string.split(name, '.')
for comp in components[1:]:
mod = getattr(mod, comp)
return mod
funkcja(argumenty), gdyż w tym przypadku istnieje
zawsze dokładnie jeden argument. Jest natomiast równoważne wywołaniu
funkcja(*argumenty, **arg_kluczowe). Dzięki
dostępności takiej "rozszerzonej składni" wywołań funkcji,
wykorzystanie funkcji apply() jest zupełnie opcjonalne.
x jest
równoważna wartości fałszywej, zwracana jest wartość False, w
przeciwnym przypadku zwracana jest wartość True. bool
jest również klasą, potomną klasy int. Klasa bool nie
może być już klasą bazową dziedziczenia. Jedynymi egzemplarzami tej
klasy są False oraz True.
Dodano w wersji 2.2.1.
chr(97) zwróci
napis 'a'. Jest to funkcja odwrotna do ord().
Argument musi być z przedziału [0..255] włącznie. Gdy i jest
spoza tego przedziału, zostanie wywołany ValueError.
Metoda klasowa oczekuje klasy w swoim pierwszym argumencie, podobnie, jak metoda egzemplarza oczekuje w pierwszym argumencie samego egzemplarza. Metodę klasy można zdefiniować w następujący sposób:
class C:
def f(klasa, arg1, arg2, ...): ...
f = classmethod(f)
Metodę klasy można wywołać bezpośrednio z obiektu klasy (na przykład C.f()) lub z egzemplarza (n.p. C().f()). Wszystkie własności, za wyjątkiem klasy egzemplarza są w takim przypadku ignorowane. Jeśli metoda klasy jest wywoływana dla klasy potomnej, w pierwszym argumencie metody zostanie przekazana klasa potomna.
Metody klas mają odmienne działanie od metod statycznych języków C++
lub Java. Podobne działanie udostępnia
x < y, zerem gdy
x == y a liczbą dodatnia dla x > y.
'<string>').
Argument rodzaj określa rodzaj kodu do kompilacji. Może mieć
wartość 'exec' jeśli składa się z sekwencji instrukcji lub
'eval' jeśli składa się z jednego wyrażenia lub 'single'
jeśli składa się z pojedyńczej instrukcji interaktywnej (w tym ostatnim
przypadku wypisane zostaną wyniki instrukcji wyliczjących się do
wartości innej niż None).
W przypadku, gdy kompilowane są instrukcje wielowierszowe, należy
zwrócić uwagę na nastepujące szczegóły: sekwencje końca wiersza muszą
być reprezentowane przez pojedynczy znak końca wiersza ('\
n'), a ponadto cała instrukcja musi kończyć się przynajmniej jednym
znakiem końca wiersza. W przypadku, gdy końce wierszy są
reprezentowane przez sekwencje '\r\n', należy wykorzystać
metodę replace() w celu zamiany ich na znaki '\n'.
Opcjonalne argumenty znaczniki oraz bez_dziedziczenia (które zostały wprowadzone w wersji 2.2 Pythona) kontrolują wpływ przyszłych własności na kompilację argumentu napis (patrz: PEP 236). Jeśli żaden z tych argumentów nie jest dostępny (lub obydwa mają wartość zerową), kod zostanie skompilowany z opcjami przyszłymi odpowiednimi dla kodu wywołującego kompilację. Jeśli określony zostanie argument znaczniki a bez_dziedziczenia zostanie pominięty lub będzie posiadał wartość zerową, kod zostanie skompilowany z własnościami przyszłymi określonymi przez znaczniki jak również z odziedziczonymi ze środowiska wywołującego kompilację. Jeśli argument bez_dziedziczenia zostanie określony i będzie miał niezerową wartość, wszelkie własności przyszłe muszą zostać określone przez argument znaczniki - własności przyszłe uaktywnione w środowisku wywołującym kompilację zostaną zignorowane.
Przyszłe własności są określane przez znaczniki bitowe, które mogą być poddawane operacjom bitowej alternatywy w celu połączenia w znaczniki określające wiele instrukcji. Atrybut określający daną własność może zostać odczytany z egzemplarza klasy _Feature w module __future__.
delattr(x, 'costam')
jest równoznaczne del x.costam.
Wszystkie poniższe przykłady zwrócą słownik odpowiadający
następującemu:
{1: 2, 2: 3}:
dict({1: 2, 2: 3})
dict({1: 2, 2: 3}.items())
dict({1: 2, 2: 3}.iteritems())
dict(zip((1, 2), (2, 3)))
dict([[2, 3], [1, 2]])
dict([(i-1, i) for i in (2, 3)])
Dodano w wersji 2.2.
>>> import struct >>> dir() ['__builtins__', '__doc__', '__name__', 'struct'] >>> dir(struct) ['__doc__', '__name__', 'calcsize', 'error', 'pack', 'unpack']
Notka: Funkcja dir() została zaprojektowana jako funkcja pomocnicza podczas pracy w trybie interaktywnym interpretera, dlatego jest zorientowana na udostępnianie listy interesujących nazw, nie zaś listy rygorystycznie i konsekwentnie określonych nazw. Szczegółowe działanie tej funkcji może różnić się w różnych wydaniach języka.
(a / b, a % b).
Dla liczb zmiennoprzecinkowych wynik jest równoznaczny z:
(q, a % b), gdzie q oznacza zwykle math.floor(a /
b) lecz może być mniejszy o 1 od tego wyniku.
Niezależnie od tego q *
b + a % b jest bardzo bliskie a, jeśli
a % b n ie jest równe zeru posiada ten sam znak
co b, oraz 0 <= abs(a % b) < abs(b).
Zmieniono w wersji 2.3: Wywołanie funkcji divmod() z argumentami będącymi liczbami zespolonymi nie będzie dopuszczalne w przyszłych wersjach języka (jest funkcjonalnością przestarzałą).
(0, seq[0]), (1, seq[1]), (2,
seq[2]), ....
Dodano w wersji 2.3.
>>> x = 1
>>> print eval('x+1')
2
Funkcja eval może również być używana dla wykonywania
obiektów kodu (n.p. utworzonych przy pomocy funkcji
compile()). W tym przypadku funkcji przekazuje się obiekt
kodu zamiast napisu. Obiekt kodu musi zostać skompilowany z
opcją rodzaj ustawioną na 'eval'.
Wskazówka: dynamiczne wywoływanie instrukcji jest obsługiwane przez instrukcję exec. Wykonywanie instrukcji z pliku jest obsługiwane przez funkcję execfile(). Funkcje globals() oraz locals() zwracają odpowiednio globalną i lokalną przestrzeń nazw, co może okazać się użyteczne dla wywoływania funkcji eval() czy też execfile().
Argumentami są nazwa pliku oraz dwa opcjonalne słowniki. Plik jest
wczytywany i wykonywany jako sekwencja instrukcji Pythona (podobnie
jak moduł) z wykorzystaniem słowników globalne i lokalne
jako globalnej i lokalnej przestrzeni nazw. Jeśli
słownik lokalne zostanie pominięty jego wartość zostaje
domyslnie ustawiona na globalne. Jeśli pominięte zostaną oba
argumenty słownikowe, wyrażenie zostaje wywołane w tym samym
środowisku co wywołanie funkcji execfile(). Wartością
zwracaną z funkcji jest None.
Ostrzeżenie: Domyślna wartość parametru lokalne działa tak, jak opisano poniżej dla funkcji locals(): nie należy modyfikować domyślnego słownika lokalne. W celu zachowania modyfikacji w słowniku lokalne (wykonanych w wyniku działania funkcji execfile()) należy raczej przekazać go w sposób jawny. Funkcja execfile() nie może zostać użyta w celu wiarygodnej modyfikacji lokalnego środowiska wywołującej ją funkcji.
stdio języka C: filename
jest nazwą plika, który ma zostać otwarty, natomiast mode
określa tryb otwarcia pliku: 'r' dla odczytu, 'w' dla
zapisu (czyszcząc starą zawartość pliku) oraz 'a' dla otwarcia
w trybie dopisywania na końcu pliku (co na niektórych wersjach
systemu Unix oznacza, że wszystkie zapisy są dokonywane na
końcu pliku, niezależnie od aktualnej pozycji w pliku).
Tryby 'r+', 'w+' oraz 'a+' otwierają plik do
aktualizacji (tryb 'w+' jednak wyczyści zawartość pliku). Do
trybu można dopisać opcję 'b', co spowoduje otwarcie pliku w
trybie binarnym. Ma to znaczenie w systemach, w których rozróżniany
jest tryb tekstowy i binarny, na pozostałych opcja ta jest ignorowana.
Jeśli pliku nie można otworzyć, wywoływany jest wyjątek klasy
IOError.
Oprócz standardowych trybów funkcji fopen() można
zastosować tryb 'U' oraz 'rU'. Jeśli w Pythonie jest
aktywna uniwersalnej obsługi sekwencji zakończenia wierszy (domyślnie
uaktywniana w procesie kompilacji) plik zostanie otwarty w trybie
tekstowym a wiersze mogą być zakończone dowolną kombinacją sekwencji
końca wiersza: uniksową '\n', makintoshową '\r'
lub windowsową '\r\n'. Wszystkie te sekwencje będą w
programie pythonowym widziane jako '\n'. jeśli Python nie ma
uaktywnionej uniwersalnej obsługi sekwencji zakończenia wierszy tryb
'U' będzie identyczny z trybem tekstowym. Należy pamiętać, że
obiekt plikowy otwarty w trybie z uniwersalną obsługą sekwencji
zakończenia wierszy będzie miał udostępniony atrybut
newlines o wartości None (jeśli w pliku nie zostały
odczytane żadne sekwencje zakończenia wierszy), '\n',
'\r', '\r\n' lub o wartości krotki zawierającej
wszystkie napotkane sekwencje zakończeń wierszy.
W przypadku, gdy zostanie pominięty parametr mode, domyślnie
zostaje przyjęta wartość 'r'. W przypadku otwierania pliku
binarnego w celu zwiększenia przenośności kodu należy stosować opcję
'b' (nawet w przypadku systemów ignorujących tę opcję zwiększa
to czytelność tworzonego kodu).
Opcjonalny parametr bufsize określa porządany rozmmiar bufora dla pliku: 0 oznacza brak buforowania, 1 oznacza buforowanie pojedynczych wierszy, każda inna wartość dodatnia określa w przybliżeniu rozmiar bufora. Wartość ujemna parametry bufsize oznacza, że zastosowana zostanie systemowa wartość domyślna, co dla urządzeń tty oznacza zwykle buforowanie pojedynczych wierszy oraz pełne buforowanie dla pozostałych plików. Parametr ten domyślnie przyjmuje ustawienia systemowe.2.3
Konstruktor file() został dodany w Pythonie 2.2. Poprzednia wersja -- open() -- została zachowana w celu zgodności wstecz i stanowi alias dla file().
Construct a list from those elements of list for which
function returns true. If list is a string or a tuple,
the result also has that type; otherwise it is always a list. If
function is None, the identity function is assumed, i.e. all elements of list that are false (zero or empty) are
removed.
Construct a list from those elements of list for which
function returns true. list may be either a sequence, a
container which supports iteration, or an iterator, If list is
a string or a tuple, the result also has that type; otherwise it is
always a list. If function is None, the identity
function is assumed, that is, all elements of list that are
false (zero or empty) are removed.
Zwraca listę z tych elementów argumentu lista, dla których
wywołanie funkcji funkcja zwróci wartośc prawdziwą. Parametr
lista może być sekwencją, kontenerem obsługującym protokół
iteracji lub iteratorem. Jeśli lista jest napisem lub krotką,
wynik również jest tego typu. W każdym innym przypadku zwracana jest
lista. Jeśli funkcja równa jest None, wykorzystywana jest
funkcja identyfikująca, to znaczy zostają usunięte wszystkie elementy
z argumentu lista, których wartości są równoważne wartości
fałszywej (to znaczy mają wartość zero lub są puste).
string.atof(x). Alternatywnie argument może być liczbą
całkowitą zwykłą lub długą lub też liczbą zmiennoprzecinkową. W tej
sytuacji zwracana jest liczba zmiennoprzecinkowa o tej samej wartości
(z dokładnością liczb zmiennoprzecinkowych Pythona).
Notka: Dla argumentu będącego napisem mogą być zwrócone wartości NaN oraz Infinity w zależności od biblioteki w C na której zbudowano system Pythona. Konkretny zestaw napisów dla których zwracane są te wartości jest uzależniony wyłącznie od wspomnianej biblioteki w C i różni się dla różnych implementacji.
getattr(x, 'costam') jest równoznaczne z x.costam. Jeśli
nazwany atrybut nie istnieje zwracana jest wartość określona
opcjonalnym parametrem domyślnie, gdy jednak parametr ten nie
został podany wywoływany jest wyjątek AttributeError.
getattr(obiekt,
nazwa) i sprawdzenie, czy zostaje wywołany wyjątek).
hex(-1) daje w wyniku '0xffffffff'.
Kiedy porównywane na maszynie o takiej samej długości słowa literał
ten jest wyliczany jako -1, na maszynie o innej długości słowa może
okazać się dużą liczbą całkowitą dodatnią lub też wywołać wyjątek
OverflowError.
eval(raw_input(prompt)).
Ostrzeżenie:
Funkcja ta nie jest odporna na błędy użytkownika!
Oczekuje prawidłowego wyrażenia Pythona wpisanego na wejściu. Jeśli
wprowadzone wyrażenie nie jest składniowo poprawne zostanie wywołany
SyntaxError. W przypadku napotkania innych błedów podczas
przetwarzania wyrażenia mogą zostać wywołane inne wyjątki (z drugiej
strony taka funkcjonalnośc może być pożądana w przypadku szybkich
skryptów do wykorzystania przez ekspertów).
Jeśli załadowany został moduł readline, funkcja input() wykorzysta go dla umożliwienia edycji wyrażenia oraz funkcjonalności historii wprowadzonych wyrażeń.
Dla implementacji pobierania danych od użytkownika warto wykorzystać funkcję raw_input().
string.atoi(x[,system]).
Parametr system definiuje system zapisu liczb i może być liczbą
całkowitą w przedziale [2, 36] lub zerem. Jeśli system jest
zerem prawidłowy system jest określany na podstawie zawartości napisu.
Interpretacja jest identyczna z tą wykorzystywaną przy literałach
liczb całkowitych. Jeśli system jest zdefiniowany a x nie
przedstawia liczby wywoływany jest TypeError.
Alternatywnie argument może być liczbą całkowitą (zwykłą lub długą) lub liczbą zmiennoprzecinkową. Konwersja liczb zmiennoprzecinkowych na całkowite zaokrągla liczby w kierunku zera.
0). If it does not
support either of those protocols, TypeError is raised.
If the second argument, sentinel, is given, then o must
be a callable object. The iterator created in this case will call
o with no arguments for each call to its next()
method; if the value returned is equal to sentinel,
StopIteration will be raised, otherwise the value will
be returned.
Dodano w wersji 2.2.
sequence[:]. For instance,
list('abc') returns ['a', 'b', 'c'] and list(
(1, 2, 3) ) returns [1, 2, 3].
string.atol(x). The
radix argument is interpreted in the same way as for
int(), and may only be given when x is a string.
Otherwise, the argument may be a plain or
long integer or a floating point number, and a long integer with
the same value is returned. Conversion of floating
point numbers to integers truncates (towards zero).
None items. If function
is None, the identity function is assumed; if there are
multiple list arguments, map() returns a list consisting
of tuples containing the corresponding items from all lists (a kind
of transpose operation). The list arguments may be any kind
of sequence; the result is always a list.
oct(-1)
yields '037777777777'. When evaluated on a machine with the
same word size, this literal is evaluated as -1; at a different word
size, it may turn up as a large positive number or raise an
OverflowError exception.
ord('a') returns the integer 97,
ord(u'
u2020') returns 8224. This is the inverse of
chr() for strings and of unichr() for Unicode
characters.
pow(x, y) % z). The
arguments must have numeric types. With mixed operand types, the
coercion rules for binary arithmetic operators apply. For int and
long int operands, the result has the same type as the operands
(after coercion) unless the second argument is negative; in that
case, all arguments are converted to float and a float result is
delivered. For example, 10**2 returns 100, but
10**-2 returns 0.01. (This last feature was added in
Python 2.2. In Python 2.1 and before, if both arguments were of integer
types and the second argument was negative, an exception was raised.)
If the second argument is negative, the third argument must be omitted.
If z is present, x and y must be of integer types,
and y must be non-negative. (This restriction was added in
Python 2.2. In Python 2.1 and before, floating 3-argument pow()
returned platform-dependent results depending on floating-point
rounding accidents.)
fget is a function for getting an attribute value, likewise fset is a function for setting, and fdel a function for del'ing, an attribute. Typical use is to define a managed attribute x:
class C(object):
def getx(self): return self.__x
def setx(self, value): self.__x = value
def delx(self): del self.__x
x = property(getx, setx, delx, "I'm the 'x' property.")
Dodano w wersji 2.2.
1. If the start argument is
omitted, it defaults to 0. The full form returns a list of
plain integers [start, start + step,
start + 2 * step, ...]. If step is positive,
the last element is the largest start + i *
step less than stop; if step is negative, the last
element is the largest start + i * step
greater than stop. step must not be zero (or else
ValueError is raised). Example:
>>> range(10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> range(1, 11) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> range(0, 30, 5) [0, 5, 10, 15, 20, 25] >>> range(0, 10, 3) [0, 3, 6, 9] >>> range(0, -10, -1) [0, -1, -2, -3, -4, -5, -6, -7, -8, -9] >>> range(0) [] >>> range(1, 0) []
>>> s = raw_input('--> ')
--> Monty Python's Flying Circus
>>> s
"Monty Python's Flying Circus"
If the readline module was loaded, then raw_input() will use it to provide elaborate line editing and history features.
reduce(lambda x, y: x+y, [1, 2,
3, 4, 5]) calculates ((((1+2)+3)+4)+5). If the optional
initializer is present, it is placed before the items of the
sequence in the calculation, and serves as a default when the
sequence is empty. If initializer is not given and
sequence contains only one item, the first item is returned.
There are a number of caveats:
If a module is syntactically correct but its initialization fails,
the first import statement for it does not bind its name
locally, but does store a (partially initialized) module object in
sys.modules. To reload the module you must first
import it again (this will bind the name to the partially
initialized module object) before you can reload() it.
When a module is reloaded, its dictionary (containing the module's global variables) is retained. Redefinitions of names will override the old definitions, so this is generally not a problem. If the new version of a module does not define a name that was defined by the old version, the old definition remains. This feature can be used to the module's advantage if it maintains a global table or cache of objects -- with a try statement it can test for the table's presence and skip its initialization if desired.
It is legal though generally not very useful to reload built-in or dynamically loaded modules, except for sys, __main__ and __builtin__. In many cases, however, extension modules are not designed to be initialized more than once, and may fail in arbitrary ways when reloaded.
If a module imports objects from another module using from ... import ..., calling reload() for the other module does not redefine the objects imported from it -- one way around this is to re-execute the from statement, another is to use import and qualified names (module.name) instead.
If a module instantiates instances of a class, reloading the module that defines the class does not affect the method definitions of the instances -- they continue to use the old class definition. The same is true for derived classes.
round(0.5) is 1.0 and round(-0.5) is -1.0).
setattr(x, 'foobar', 123) is equivalent to
x.foobar = 123.
range(start, stop, step). The start
and step arguments default to None. Slice objects have
read-only data attributes start, stop and
step which merely return the argument values (or their
default). They have no other explicit functionality; however they
are used by Numerical Python and other third
party extensions. Slice objects are also generated when extended
indexing syntax is used. For example: "a[start:stop:step]" or
"a[start:stop, i]".
A static method does not receive an implicit first argument. To declare a static method, use this idiom:
class C:
def f(arg1, arg2, ...): ...
f = staticmethod(f)
It can be called either on the class (e.g. C.f()) or on an instance (e.g. C().f()). The instance is ignored except for its class.
Static methods in Python are similar to those found in Java or C++.
For a more advanced concept, see
A typical use for calling a cooperative superclass method is:
class C(B):
def meth(self, arg):
super(C, self).meth(arg)
repr(object) is that
str(object) does not always attempt to return a string
that is acceptable to eval(); its goal is to return a
printable string.
tuple('abc') returns
returns ('a', 'b', 'c') and tuple([1, 2, 3]) returns
(1, 2, 3).
>>> import types >>> x = 'abc' >>> if type(x) is str: print "It's a string" ... It's a string >>> def f(): pass ... >>> if type(f) is types.FunctionType: print "It's a function" ... It's a function
The isinstance() built-in function is recommended for testing the type of an object.
unichr(97) returns the string
u'a'. This is the inverse of ord() for Unicode
strings. The argument must be in the range [0..65535], inclusive.
ValueError is raised otherwise.
Dodano w wersji 2.0.
If encoding and/or errors are given, unicode()
will decode the object which can either be an 8-bit string or a
character buffer using the codec for encoding. The
encoding parameter is a string giving the name of an encoding;
if the encoding is not known, LookupError is raised.
Error handling is done according to errors; this specifies the
treatment of characters which are invalid in the input encoding. If
errors is 'strict' (the default), a
ValueError is raised on errors, while a value of
'ignore' causes errors to be silently ignored, and a value of
'replace' causes the official Unicode replacement character,
U+FFFD, to be used to replace input characters which cannot
be decoded. See also the codecs module.
If no optional parameters are given, unicode() will mimic the
behaviour of str() except that it returns Unicode strings
instead of 8-bit strings. More precisely, if object is a
Unicode string or subclass it will return that Unicode string without
any additional decoding applied.
For objects which provide a __unicode__() method, it will
call this method without arguments to create a Unicode string. For
all other objects, the 8-bit string version or representation is
requested and then converted to a Unicode string using the codec for
the default encoding in 'strict' mode.
Dodano w wersji 2.0. Zmieniono w wersji 2.2: Support for __unicode__() added.
None.
With a single sequence argument, it returns a list of 1-tuples.
Dodano w wersji 2.0.