function - функция

Стандартные функции

any(iter)

Возвращает True если хотя бы один из объектов интерируемого объекта True.

all(iter)

Возвращает True если все элементы интерируемого объекта True.

compile(string, filename, kind[, flags=0[, dont_inherit]])

Компилирует строку в байт-код.

  • string - строка

  • filename - файл, в котором эта строка определена

  • kind - тип компилируемого кода
    • ‘single’ – для единственной инструкции
    • ‘exec’ – для множества инструкций
    • ‘eval’ – для выражений
  • flags - определяет, какие дополнительные особенности (включенные в модуль __future__) должны быть активированы.

    Эти особенности перечисляются в виде флагов, объявленных в модуле __future__, с помощью побитовой операции ИЛИ. (__future__.division.compiler_flag)

  • dont_inherit - если установлен, активируются только особенности, перечисленные в аргументе flags, – особенности, действующие в текущей версии, игнорируются.

delattr(obj, attr)

удаляет атрибут из объекта

dir([obj])

Возвращает список, содержащий глобальные свойства и методы, или свойства и методы аргумента.

dir()
# ['__builtins__', '__doc__', '__name__', '__package__']

import os
dir(os)
# [...'read', 'remove', 'removedirs', ...]
enumerate(iter[, initial_value)

Возвращает объект итератор, который воспроизводит последовательность кортежей, содержащих порядковый номер итерации и значение, полученное от объекта iter.

a = enumerate((1, 2))

next(a)
# (0, 1)

next(a)
# (1, 2)

next(a)
# Traceback (most receпt са11 1ast):
#     File "<pyshe11#10>", 1iпе 1, iп <modu1e>
#         next(obj)
# Stopiteratioп

for i in enumerate((1, 2))
    print i
# (0, 1)
# (1, 2)
eval(x[, globals, locals])

Преобразует строковый объект, в объект питона, а также выполняет выражение аргумента

eval('[1, 2, 3, 4]')
# [1, 2, 3, 4]
exec(x[, globals, locals])

Выполняет выражение аргумента

filter(function, iter_object)

Возвращает список, состоящий из тех элементов объекта, для которых обработчик является истинной

Изменено в версии 3.x: возвращает объект генератор

filter(lambda x: x % 10 == 0, xrange(20))
# [0, 10]

Примечание

Проигрывает в скорости работы генераторам списка

import timeit

setup = "rows = [{'param1': i} for i in xrange(1000*1000)]"

a = "filter(lambda x: x['param1'] % 100000 == 0, rows)"
b = "[x for x in rows if x['param1'] % 100000 == 0]"

print(timeit.repeat(a, setup=setup, number=3))
# [0.3401670455932617, 0.3369150161743164, 0.3323078155517578]

print(timeit.repeat(b, setup=setup, number=3))
# [0.18962311744689941, 0.19053101539611816, 0.1930980682373047]
getattr(obj, attr[, default])

Возвращает значение атрибута объекта

globals()

Возвращает словарь текущего модуля, который представляет глобальное пространство имен.

При вызове из функции или метода возвращает глобальное пространство имен для модуля, в котором была определена эта функция или метод.

hasattr(object, name)

Возвращает True, аргумент name является именем атрибута объекта object.

В противном случае возвращается значение False.

Аргумент name должен быть строкой.

hash(object)

Возвращает целочисленное значение хеша для объекта object (если это возможно).

Значения хешей в первую очередь используются в реализациях словарей, множеств и других объектов отображений.

Два объекта, которые признаются равными, имеют одинаковые значения хешей.

Изменяемые объекты не поддерживают возможность вычисления хеша, однако пользовательские объекты могут определять метод __hash__(), чтобы обеспечить поддержку этой операции.

help([object])

Обращается к справочной системе во время интерактивных сеансов.

Аргумент object может быть строкой с именем модуля, класса, функции, метода, с ключевым словом или названием раздела в документации.

Если передается объект какого-либо другого типа, будет воспроизведена справочная информация для этого объекта.

При вызове без аргумента будет запущен инструмент предоставления интерактивной справки с дополнительной информацией.

id(obj)

Возврващает число, уникальный идентификатор объекта

input([message])
Параметры:message (str) – строка, которая выведется в stdout

Возврващает число, полученное со stdin.

Изменено в версии 3.x: с 3 версии возвращает строку

x = input(u'Введите число\n')
# Введите число
# 1
x
# 1
isinstance(obj, type)

Возвращает True | False, если типом объекта является сравниваемый тип.

isinstance(1, int)
# True
isinstance(1, str)
# False
issubclass(obj, type)

Возвращает True | False, если объект является подклассом типа.

iter(object[, sentinel])

Возвращает итератор, воспроизводящий элементы объекта object.

Если аргумент sentinel опущен, объект object должен реализовать либо метод __iter__(), который создает итератор, либо метод __getitem__(), который принимает целочисленные аргументы со значениями, начиная с 0.

При наличии аргумента sentinel аргумент object интерпретируется иначе.

В этом случае объект object должен быть вызываемым объектом, не принимающим аргументов.

Возвращаемый им итератор будет вызываться этой функцией в цикле до тех пор, пока он не вернет значение, равное значению аргумента sentinel, после чего итерации будут остановлены.

Если объект object не поддерживает итерации, будет возбуждено исключение TypeError.

len(object)

Возвращает число, длину оъекта

len('ilnurgi')
# 7
locals()

Возвращает словарь, представляющий текущую локальную таблицу символов

locals()
# {'__builtins__': , '__package__': None, 'i': 'ilnur', ... }
map(func, iter1[, iter2, ...])
Параметры:
  • func – функция, обработчик
  • iter – итерируемый объект

применяет функцию к каждому элементу последовательности и возвращает список результатов.

можно передать несколько последовательностей, то в функцию будет передаваться сразу несколько элементов, рсположенных в последовательностях на одинаковом смещении.

Если количество элементов в nоследовательностях будет разным, то в качестве ограничения выбирается nоследовательность с минимальным количеством элементов.

Изменено в версии 3.Х: возвращает объект генератор

map(unicode, 'qw')
# [u'q', u'w']
max(iter)

Возвращает максимальный элемент итерирумого объекта

max([0, 6, 1])
# 6
min(iter)

Возвращает минимальный элемент итерируемого бъекта

min('ilnurgi')
# 'i'
next(s[, default])

Возвращает следующий элемент итератора s.

После того как все элементы итератора будут исчерпаны, возбуждает исключение StopIteration, если не указано значение по умолчанию в аргументе default.

В противном случае возвращается значение по умолчанию.

print(args[, sep=' ', end='n', file=sys.stdout])
Параметры:
  • args – объекты для вывода
  • sep (str) – разделитель объектов
  • end (str) – окончание строки вывода
  • file (file) – объект, куда выводятся данные

Вывод последовательности значений в файловый объект

Изменено в версии 3.Х: начиная с 3 версии питона, print стала функцией

print ('1', '2')
property([fget[, fset[, fdel[, doc]]]])
Параметры:
  • fget (func) – функция, возвращающая значение атрибута
  • fset (func) – устанавливает новое значение атрибута
  • fdel (func) – удаляет атрибут
  • doc (str) – документация

Создает атрибут-свойство класса

class MyClass:

    def init (self, value):
        self.var = value

    @property
    def v(self):
        return self.var

    @v.setter
    def v(self, value):
        self.var = value

    @v.deleter
    def v(self):
        del self.var
range([A=0, ] B[,C=1]])
Параметры:
  • А – начало
  • В – конечная позиция
  • С – шаг

Возвращает сгенерированный список.

Изменено в версии 3.x: с 3 версии возвращает генератор

a = range(3)
# range(0, 3)

a[0], a[1], a[2]
# 0, 1, 2

a[0:2]
# range(0, 2)

1 in a
#True

# возвращает индекс искомого объекта, возбуждает исключение ValueError
a.index(1)
# 0

# возвращает количесвто элементов
a.count(1)
# 1

range(3)
# [0, 1, 2]

range(1, 5, 2)
# [1, 3]
raw_input([comment])

Возврващает строку, полученную со stdin.

x = raw_input('Введите текст\n')
# Введите текст
# ilnurgi.ru

print x
# 'ilnurgi.ru'
reduce(function, items[, initial])
  • function - функция обработчик, принимает два параметра: накопленное и текущее значение
  • items - итерируемый объект
  • initial - начальное значение

Применяет функцию к парам элементов в итерируемом объекте и возвращает единственное накопленное значение.

Функция должна принимать два аргумента, накопленное и текущее значение.

repr(x)

Возвращает строковый объект аргумента.

repr([1, 2, 3, 4])
# '[1, 2, 3, 4]'
reversed()

Создает итератор для обхода последовательности s в обратном порядке.

setattr(object, name, value)

Создает в объекте object атрибут name и записывает в него значение value.

Аргумент name должен быть строкой.

Выполняет ту же операцию, что и инструкция object.name = value.

sorted(list[, key, reverse])
Параметры:
  • list – итерируемый объект
  • key – параметр для сортировки
  • reverse – True | False обратный порядок

Возвращает список, отсортированный

sorted(['567', '34566','1'], key=len)
# ['1', '567', '34566']
staticmethod(func)

Создает статический метод класса.

Эта функция неявно вызывается декоратором @staticmethod.

sum(iter[, initial=0])
Parma iter:последовательность
Параметры:initial – начальное значение

Возвращает число, сумму элементов последовательности

sum((10, 20, 30, 40)), sum((10, 20, 30, 40), 2)
# 100, 102
super(type[, object])

Возвращает объект, представляющий суперклассы типа type.

Чаще всего возвращаемый объект используется для вызова методов базового класса.

class B(A):
    def foo(self):
        super(B,self).foo()
type(a)

Возвращает строку, тип аргумента

type(5)
# 'int'
type(name, bases, dict)

Создает новый объект type (как как при объявлении нового класса).

В аргументе name передается имя типа, в аргументе bases – кортеж базовых классов, а в аргументе dict – словарь, содержащий определения, соответствующие телу класса.

Чаще всего эта функция используется при работе с метаклассами.

xrange(A[, B[, C]])
Параметры:
  • А – количество элементов или начальная позиция
  • В – конечная позиция
  • С – шаг

Возвращает объект генератор.

a = xrange(3)
for i in a:
    print i
# 0
# 1
unicode(object)

возвращает юникод строку, преобразованный из аргумента

vars([obj])

возвращает идентификаторы

  • если вызывается без параметра внутри функции, то возвращается словарь с локальными идентификаторами
  • если вызывается без параметра вне функции, то возвращается словарь сс глобальными идентификаторами
  • при указании объекта, возвращается инденификаторы объекта (obj.__dict__)
zip(<Последовательность1>, <Последовательность2>, ...)

возвращает список кортежей, содержащий элемент последовательностей, которые расположены на одинаковом смещении.

Если количество элементов в nоследовательностях будет разным, то в результат nоnадут только элементы, которые существуют во всех nоследовательностях на одинаковом смеше­нии.

Изменено в версии 3.x: возвращает объект генератор

zip((1,2,3), (4,5,6), (7,8,9))
# [(1,4,7), (2,5,8), (3,6,9)]

Атрибуты встроенных функции

атрибут описание
b.__doc__ Строка документирования
b.__name__ Имя функции/метода
b.__self__ Ссылка на экземпляр, ассоциированный с данным методом (для связанных методов)

lambda функции

f = lambda x: x*2
for i in (1,2):
    print f(i)
# 2
# 4

Пользовательски функции

def func(text):
    """
    документация функции
    """
    print text

func('http://ilnurgi.ru')
# http://ilnurgi.ru
def func(first_arg, second_arg):
    """
    функция с позиционными аргументами
    func(1, 2)
    """

def func(first_arg=None, second_arg=None):
    """
    функция с аргументами по умолчанию
    func()
    func(second_arg=2)
    """

def func(*args, **kwargs):
    """
    func(1, b=2) ->
        (1, )
        {'b': 2}
    """
    print(args)
    print(kwargs)

Атрибуты функции

атрибут описание
f.__closure__ Кортеж, содержащий данные, связанные с вложенными областями видимости
f.__code__ Скомпилированный байт-код функции
f.__defaults__ Кортеж с аргументами по умолчанию
f.__dict__ Словарь, содержащий атрибуты функции
f.__doc__ Строка документирования
f.__globals__ Словарь, определяющий глобальное пространство имен
f.__name__ Имя функции

Декораторы

Это функция, в качестве аргумента принимает функцию или класс

def prepare(func):
    def wrapp():
        print 1
        func()
        print 3
    return wrapp
@prepare
def func():
    print 2
func()
# 1
# 2
# 3

def deco(C):
    print("Bнyтpи декоратора")
    return C

@deco
class MyClass:
    def init (self, value):
        self.v = value

Генераторы

С помощью инструкции yield, функция может генерировать целые последовательности результатов, тогда такие функции называют генераторами

def countdown(n):
    print u'Обратный отсчет!'
    while n > 0:
        yield n
        n -= 1

c = countdown(3)
c.next()
# Обратный отсчет
# 3
c.next()
# 2
c.next()
# 1
gen.gi_code

Объект с программным кодом функции-генератора

gen.gi_frame

Кадр стека функции-генератора

gen.gi_running

Целое число, указывающее – выполняется ли функция-генератор в настоящий момент

gen.next()

Выполняет функцию-генератор, пока не будет встречена следующая инструкция yield, и возвращает полученное значение

(в Python 3 этот метод вызывает метод __next__())

gen.send(value)

Передает значение value генератору.

Это значение возвращается выражением yield в функции-генераторе.

После этого функция-генератор продолжит выполнение, пока не будет встречена следующая инструкция yield.

Метод send() возвращает значение, полученное от этой инструкции yield

gen.close()

Закрывает генератор, возбуждая исключение GeneratorExit в функции-генераторе.

Этот метод вызывается автоматически, когда объект генератора уничтожается сборщиком мусора

gen.throw(exc[, exc_value[, exc_tb]])

Возбуждает исключение в функции-генераторе в точке вызова инструкции yield.

  • exc - тип исключения

  • exc_value - значение исключения

  • exc_tb - необязательный объект с трассировочной информацией.

    Если исключение перехвачено и обработано, вернет значение, переданное следующей инструкции yield

Сопрограммы

Функция обрабатывающая последовательность входных параметров.

def print_matches(matchtext):
    print 'Поиск подстроки', matchtext
    while True:
        # Получение текстовой строки
        line = (yield)
        if matchtext in line:
            print line

matcher = print_matches('python')

# Перемещение до первой инструкции (yield)
matcher.next()
# Поиск подстроки python

matcher.send("Hello World")
matcher.send("python is cool")
# python is cool
matcher.send("yow!")

# Завершение работы с объектом matcher
matcher.close()

Аннтоации в функциях:

Добавлено в версии 3.x.

def func(a: 'Параметр', b: 10 + 5 = 3) -> None:
   pass

Функция возвращает None, для параметров a и b заданы описания и для b задано значение по умолчанию.

После создания функции все выражения будут выполнены и результаты сохранятся в виде словаря в атрибуте __annotations__ объекта функции.

Замыкания

def sum_factory(first):
    """
    функция создает сумматор
    """
    def sum(second):
        """
        переменная first замыкается в этой функции
        """
        return first + second
    return sum

sum_2 = sum_factory(2)

sum_2(1)
# 3

sum_2(10)
# 12