справочник по Python. мм isbn 9785932861578 9 785932 861578
Скачать 4.21 Mb.
|
Глава 12. Встроенные функции Глава 13. Службы Python времени выполнения Глава 14. Математика Глава 15. Структуры данных, алгоритмы и утилиты Глава 16. Работа с текстом и строками Глава 17. Доступ к базам данных Глава 18. Работа с файлами и каталогами Глава 19. Службы операционной системы Глава 20. Потоки и их согласование Глава 21. Работа с сетью и сокеты Глава 22. Разработка интернет-приложений Глава 23. Веб-программирование Глава 24. Обработка и кодирование данных в Интернете Глава 25. Различные библиотечные модули Глава 12 . Встроенные функции В этой главе описываются встроенные функции и исключения языка Py- Py- thon. Большая часть этого материала менее формально была рассмотрена в предыдущих главах. Эта глава просто объединяет все приводившие- ся ранее сведения в один раздел и дополняет их описанием более тонких особенностей некоторых функций. Кроме того, Python 2 включает в себя множество встроенных функций, которые были объявлены устаревшими и исключены из Python 3. Здесь эти функции не описываются; вместо этого основное внимание будет уделено более современным возможностям. Встроенные функции и типы Некоторые типы данных, функции и переменные всегда доступны интер- претатору и могут использоваться внутри любого модуля. Чтобы получить доступ к этим функциям, не требуется импортировать дополнительные модули, тем не менее все они содержатся внутри модуля __builtin__, в Py- Py- thon 2, и внутри модуля builtins, в Python 3. Внутри других модулей, кото- Python 3. Внутри других модулей, кото- 3. Внутри других модулей, кото- рые могут импортироваться программой, присутствует переменная __buil- buil- tins__ , которая также ссылается на этот модуль. abs(x) Возвращает абсолютное значение x. all(s) Возвращает True, если все значения в итерируемом объекте s оцениваются как True. any(s) Возвращает True, если хотя бы одно значение в итерируемом объекте s оце- нивается как True. ascii(x) Создает печатное представление объекта x, точно так же, как и функция repr() , но в результате используются только символы ASCII. Символы, от- ASCII. Символы, от- . Символы, от- 260 Глава 12. Встроенные функции сутствующие в наборе ASCII, преобразуются в соответствующие экрани- ASCII, преобразуются в соответствующие экрани- , преобразуются в соответствующие экрани- рованные последовательности. Эта функция может использоваться для просмотра содержимого строк Юникода в терминалах или в командных оболочках, не поддерживающих Юникод. Только в Python 3. basestring Абстрактный тип данных, который является суперклассом для всех строко- вых типов в Python 2 (str и unicode). Используется только при тестировании на принадлежность к строковым типам. Например, isinstance(s,basestring) вернет True, если объект s является строкой того или иного типа. Только в Python 2. bin(x) Возвращает строку с двоичным представлением целого числа x. bool([x]) Тип, используемый для представления логических значений True и False. Если используется для преобразования x, возвращает True, если значение объект x оценивается как истина, при использовании обычной семантики определения истинности (то есть ненулевое число, непустой список и так далее). В противном случае возвращает False. Кроме того, если функция bool() вызывается без аргументов, она по умолчанию возвращает False. Класс bool является производным от класса int, поэтому логические зна- чения True и False можно использовать в математических операциях, как целые числа 1 и 0. bytearray([x]) Тип, используемый для представления изменяемых массивов байтов. Ког- да создается новый массив, аргумент x может быть итерируемой последо- вательностью целых чисел в диапазоне от 0 до 255, строкой 8-битных сим- волов, литералом типа bytes или целым числом, определяющим размер массива байтов (в этом случае все элементы массива инициализируются значением 0). Объект типа bytearray выглядит, как массив целых чисел. При обращении к элементу массива, например, a[i], возвращается целое число, представляющее значение байта с индексом i. В операциях присваи- вания, таких как a[i] = v, значение v также должно быть целым 8-битным значением. Кроме того, тип bytearray поддерживает все операции, которые могут применяться к строкам (такие, как извлечение среза, find(), split(), replace() и так далее). В случае применения этих строковых операций все строковые литералы должны предваряться модификатором b, чтобы по- казать, что операции выполняются над строками байтов. Например, если требуется разбить массив байтов на поля, разделенные запятой, это сле- дует делать так: a.split(b’,’), а не a.split(‘,’). Результатом таких операций всегда будет новый объект типа bytearray, а не строка. Чтобы преобразовать объект bytearray в строку, следует использовать метод a.decode(encoding). При использовании кодировки ‘latin-1’ в аргументе encoding объект типа bytearray будет преобразован в строку 8-битных символов без каких либо преобразований значений символов. Встроенные функции и типы 261 bytearray(s ,encoding) А льтернативный способ создания экземпляра типа bytearray из строки символов s, где аргумент encoding определяет, какую кодировку символов использовать. bytes([x]) Тип, используемый для представления неизменяемых массивов байтов. В Python 2 является псевдонимом функции str(), которая создает стандарт- ную строку 8-битных символов. В Python 3 тип bytes является полностью самостоятельным типом, который является неизменяемой версией типа bytearray , описанного выше. В этом случае аргумент x интерпретируется точно так же и может использоваться тем же способом. Важное замечание, касающееся переносимости программ: даже при том, что в Python 2 опреде- лен тип bytes, его поведение отличается от поведения типа bytes в Python 3. Например, a – это экземпляр, созданный вызовом функции bytes(), тогда обращение a[i] в Python 2 вернет строку символов, а в Python 3 – целое чис- ло. bytes(s, encoding) Альтернативный способ создания экземпляра типа bytes из строки симво- лов s, где аргумент encoding определяет, какую кодировку символов исполь- зовать. Только в Python 3. chr(x) Преобразует целое число x в строку из одного символа. В Python 2 аргумент x должен иметь значение в диапазоне 0 <= x <= 255, а в Python 3 аргумент x должен быть представлен допустимым кодовым пунктом Юникода. Если значение x выходит за допустимый диапазон, возбуждается исключение ValueError classmethod(func) Эта функция создает из функции func метод класса. Обычно используется только внутри определений классов, где она неявно вызывается декорато- ром @classmethod. В отличие от обычных методов, методы класса получают в первом аргументе ссылку на класс, а не на экземпляр. Например, если имеется объект f, который является экземпляром класса Foo, при вызове метода класса относительно объекта f в первом аргументе ему будет пере- дана ссылка на класс Foo, а не на экземпляр f. cmp(x, y) Сравнивает x и y и возвращает отрицательное число, если x < y, положи- тельное, если x > y, или 0, если x == y. Сравниваться могут любые два объ- екта, однако результат может не иметь никакого смысла, если оба объекта не реализуют осмысленного метода сравнения (например, при сравнении числа и объекта файла). В некоторых случаях такая попытка сравнивания может привести к исключению. compile(string, filename, kind [, flags [, dont_inherit]]) Компилирует строку string в объект программного кода для последующего использования с функцией exec() или eval(). Аргумент string – это строка 262 Глава 12. Встроенные функции с допустимым программным кодом на языке Python. Если этот программ- Python. Если этот программ- . Если этот программ- ный код занимает несколько текстовых строк, они должны завершаться одиночным символом перевода строки (‘\n’), а не платформозависимым вариантом (например, ‘\r\n’ в Windows). Аргумент filename – это строка с именем файла, в котором была определена строка string. Аргумент kind может иметь значение ‘exec’ – в случае последовательности инструкций, ‘eval’ – для одиночного выражения или ‘single’ – в случае единственной инструкции. Аргумент flags определяет, какие дополнительные особен- ности (включенные в модуль __future__) должны быть активированы. Эти особенности перечисляются в виде флагов, объявленных в модуле __fu- fu- ture__ , с помощью побитовой операции ИЛИ. Например, если требуется активировать новую семантику операции деления, следует установить в аргументе flags значение __future__.division.compiler_flag. Если аргумент flags опущен, он принимает значение по умолчанию 0, а программный код компилируется с учетом всех особенностей, действующих в текущей версии Python. Если функции передается аргумент flags, то особенности, перечисленные в нем, добавляются к списку действующих особенностей. Если аргумент dont_inherit установлен, активируются только особенности, перечисленные в аргументе flags, – особенности, действующие в текущей версии, игнорируются. complex([real [, imag]]) Тип, используемый для представления комплексных чисел, состоящих из действительной и мнимой частей; аргументы real и imag могут иметь зна- чения любых числовых типов. Если аргумент imag опущен, мнимая часть числа принимается равной нулю. Если в аргументе real передается строка, она анализируется и преобразуется в комплексное число. В этом случае ар- гумент imag не должен передаваться. Если ни один аргумент не задан, воз- вращается число 0j. delattr(object, attr) Удаляет атрибут attr объекта object. Аргумент attr – это строка. Функция действует точно так же, как и инструкция del object.attr. dict([m]) или dict(key1 = value1, key2 = value2, ...) Тип, используемый для представления словарей. При вызове без аргумен- тов возвращает пустой словарь. Если в аргументе m передается объект ото- бражения (такой как словарь), возвращается новый словарь с теми же клю- чами и значениями, что и в объекте m. Например, если m – это словарь, то вызов dict(m) просто создаст его поверхностную копию. Если аргумент m не является отображением, он должен поддерживать итерации, в ходе кото- рых будет воспроизводиться последовательность пар (key, value). Эти пары будут использоваться для заполнения словаря. Функция dict() может также принимать именованные аргументы. Например, вызов dict(foo=3, bar=7) создаст словарь { ‘foo’ : 3, ‘bar’ : 7 }. dir([object]) Возвращает отсортированный список имен атрибутов. Если аргумент ob- ject является модулем, функция вернет список имен, объявленных в этом модуле. Если аргумент object является объектом типа или класса, функ- Встроенные функции и типы 263 ция вернет список имен атрибутов. Имена обычно извлекаются из атрибута __dict__ объекта, если он определен, но могут использоваться и другие ис- точники. При вызове без аргумента возвращается список имен в текущей локальной таблице символов. Следует отметить, что главное назначение этой функции заключается в том, чтобы служить источником информации (например, для использования в интерактивном режиме). Она не может ис- пользоваться как официальный источник информации о программе, по- скольку возвращаемые ею сведения могут быть неполными. Кроме того, пользовательские классы могут объявлять специальный метод __dir__(), способный влиять на результат этой функции. divmod(a, b) Возвращает частное и остаток от деления длинных целых чисел в виде кор- тежа. Для целых чисел возвращается значение (a // b, a % b). Для чисел с плавающей точкой – (math.floor(a / b), a % b). Эта функция не должна вызываться для комплексных чисел. enumerate(iter[, initial_value) Для заданного итерируемого объекта iter возвращается новый итератор (типа enumerate), который воспроизводит последовательность кортежей, со- держащих порядковый номер итерации и значение, полученное от объекта iter . Например, если допустить, что iter воспроизводит последовательность значений a, b, c, то итератор enumerate(iter) будет воспроизводить последо- вательность кортежей (0,a), (1,b), (2,c). eval(expr [, globals [, locals]]) Вычисляет значение выражения expr. Аргумент expr – это строка или объ- это строка или объ- строка или объ- строка или объ- или объ- или объ- объ- объ- ект программного кода, созданный функцией compile(). Аргументы globals и locals – это объекты отображений, определяющие глобальное и локаль- ное пространства имен соответственно. Если эти аргументы опущены, вы- ражение вычисляется в пространстве имен вызывающего программного кода. В большинстве случаев в аргументах globals и locals передаются словари, но в сложных приложениях для этих целей могут использоваться собственные объекты отображений. exec(code [, global [, locals]]) Выполняет инструкции языка Python. Аргумент code – это строка, файл или объект программного кода, созданный функцией compile(). Аргумен- ты globals и locals определяют глобальное и локальное пространства имен соответственно. Если эти аргументы опущены, выполнение происходит в пространстве имен вызывающего программного кода. Если не задан один из аргументов global или local, поведение этой функции несколько отлича- ется в разных версиях Python. В Python 2 exec в действительности реали- зована как специальная инструкция, тогда как в Python 3 она реализована как функция стандартной библиотеки. Такое различие в реализации по- рождает тонкий побочный эффект: в Python 2 программный код, выпол- Python 2 программный код, выпол- 2 программный код, выпол- няемый инструкцией exec, может изменять локальные переменные в про- странстве имен вызывающего программного кода. В Python 3 также имеет- Python 3 также имеет- 3 также имеет- ся возможность изменять переменные, но эти изменения не будут иметь эф- фекта за пределами самого вызова exec(). Это обусловлено тем, что в случае 264 Глава 12. Встроенные функции отсутствия аргумента locals для получения локального пространства имен в Python 3 используется функция locals(). Как следует из описания функ- ции locals(), возвращаемый ею словарь обеспечивает возможность чтения данных, но записанные в него данные не сохраняются. filter(function, iterable) В Python 2 эта функция создает список объектов, генерируемых итерируе- Python 2 эта функция создает список объектов, генерируемых итерируе- 2 эта функция создает список объектов, генерируемых итерируе- мым объектом iterable, для которых функция function возвращает значе- ние True. В Python 3 возвращается итератор, который воспроизводит этот же результат. Если в аргументе function передается значение None, то каж- дый элемент в iterable проверяется на равенство значению False и те из них, для которых условие не выполняется, удаляются. Аргумент iterable может быть любым объектом, поддерживающим итерации. Как правило, фильтрацию можно выполнить гораздо быстрее с помощью выражений- генераторов или генераторов списков (глава 6). float([x]) Тип, используемый для представления чисел с плавающей точкой. Если аргумент x является числом, оно преобразуется в число с плавающей точ- кой. Если аргумент x является строкой, она преобразуется в число с пла- вающей точкой. При вызове без аргумента возвращается число 0.0. format(value [, format_spec]) Преобразует значение value в форматированную строку, в соответствии со спецификаторами формата в строке format_spec. Эта функция вызыва- ет метод value.__format__(), который может интерпретировать специфика- торы формата по своему усмотрению. Для простых типов данных в число спецификаторов формата обычно входят символы выравнивания ‘<’, ‘>’ и ‘^’; числа (определяющие ширину поля); и символы кодов ‘d’, ‘f’ и ‘s’ для целых чисел, для чисел с плавающей точкой и для строк соответственно. Например, спецификатор формата ‘d’ предназначен для форматирования целых чисел, спецификатор ‘8d’ выровняет целое число по правому краю в поле шириной 8 символов, а спецификатор ‘<8d’ выровняет целое число по левому краю в поле шириной 8 символов. Подробнее о функции for- mat() и о спецификаторах формата рассказывается в главе 3 «Типы данных и объекты» и в главе 4 «Операторы и выражения». frozenset([items]) Тип, используемый для представления неизменяемых объектов множеств, заполненных значениями, взятыми из аргумента items, который должен быть итерируемым объектом. Значения также должны быть неизменяемы- ми. При вызове без аргумента возвращается пустое множество. |