Функции¶
В этой статье я планирую рассказать о функциях, именных и анонимных, инструкциях def, return и lambda, обязательных и необязательных аргументах функции, функциях с произвольным числом аргументов.
Именные функции, инструкция def¶
Функция в Python - объект, принимающий аргументы и возвращающий значение. Обычно функция определяется с помощью инструкции def.
Определим простейшую функцию:
1 2 | |
Инструкция return говорит, что нужно вернуть значение. В нашем случае функция возвращает сумму x и y.
Теперь мы ее можем вызвать:
1 2 3 4 | |
Функция может быть любой сложности и возвращать любые объекты (списки, кортежи, и даже функции!):
1 2 3 4 5 6 7 8 | |
Функция может и не заканчиваться инструкцией return, при этом функция вернет значение None:
1 2 3 4 5 | |
Аргументы функции¶
Функция может принимать произвольное количество аргументов или не принимать их вовсе. Также распространены функции с произвольным числом аргументов, функции с позиционными и именованными аргументами, обязательными и необязательными.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
Функция также может принимать переменное количество позиционных аргументов, тогда перед именем ставится *:
1 2 3 4 5 6 7 8 9 | |
Как видно из примера, args - это кортеж из всех переданных аргументов функции, и с переменной можно работать также, как и с кортежем.
Функция может принимать и произвольное число именованных аргументов, тогда перед именем ставится **:
1 2 3 4 5 6 7 8 9 | |
В переменной kwargs у нас хранится словарь, с которым мы, опять-таки, можем делать все, что нам заблагорассудится.
Анонимные функции, инструкция lambda¶
Анонимные функции могут содержать лишь одно выражение, но и выполняются они быстрее. Анонимные функции создаются с помощью инструкции lambda. Кроме этого, их не обязательно присваивать переменной, как делали мы инструкцией def func():
1 2 3 4 5 6 7 8 9 | |
lambda-функции, в отличие от обычной, не требуется инструкция return, а в остальном, ведет себя точно так же:
1 2 3 | |
Встроенные функции, выполняющие преобразование типов¶
bool(x)- преобразование к типу
bool, использующая стандартную процедуру проверки истинности. Еслихявляется ложным или опущен, возвращает значениеFalse, в противном случае она возвращаетTrue. bytearray([источник [, кодировка [ошибки]]])- преобразование к
bytearray. Bytearray - изменяемая последовательность целых чисел в диапазоне0≤X<256. Вызванная без аргументов, возвращает пустой массив байт. bytes([источник [, кодировка [ошибки]]])- возвращает объект типа
bytes, который является неизменяемой последовательностью целых чисел в диапазоне0≤X<256. Аргументы конструктора интерпретируются как дляbytearray(). complex([real[, imag]])- преобразование к комплексному числу.
dict([object])- преобразование к словарю.
float([X])- преобразование к числу с плавающей точкой. Если аргумент не указан, возвращается
0.0. frozenset([последовательность])- возвращает неизменяемое множество.
int([object], [основание системы счисления])- преобразование к целому числу.
list([object])- создает список.
memoryview([object])- создает объект
memoryview. object()- возвращает безликий объект, являющийся базовым для всех объектов.
range([start=0], stop, [step=1])- арифметическая прогрессия от
startдоstopс шагомstep. set([object])- создает множество.
slice([start=0], stop, [step=1])- объект среза от
startдоstopс шагомstep. str([object], [кодировка], [ошибки])- строковое представление объекта. Использует метод
__str__. tuple(obj)- преобразование к кортежу.
Другие встроенные функции¶
abs(x)- Возвращает абсолютную величину (модуль числа).
all(последовательность)- Возвращает
True, если все элементы истинные (или, если последовательность пуста). any(последовательность)- Возвращает
True, если хотя бы один элемент - истина. Для пустой последовательности возвращаетFalse. ascii(object)- Как
repr(), возвращает строку, содержащую представление объекта, но заменяет не-ASCII символы на экранированные последовательности. bin(x)- Преобразование целого числа в двоичную строку.
callable(x)- Возвращает
Trueдля объекта, поддерживающего вызов (как функции). chr(x)- Возвращает односимвольную строку, код символа которой равен
x. classmethod(x)- Представляет указанную функцию методом класса.
compile(source, filename, mode, flags=0, dont_inherit=False)- Компиляция в программный код, который впоследствии может выполниться функцией
evalилиexec. Строка не должна содержать символов возврата каретки или нулевые байты. delattr(object, name)- Удаляет атрибут с именем
name. dir([object])- Список имен объекта, а если объект не указан, список имен в текущей локальной области видимости.
divmod(a, b)- Возвращает частное и остаток от деления
aнаb. enumerate(iterable, start=0)- Возвращает итератор, при каждом проходе предоставляющем кортеж из номера и соответствующего члена последовательности.
eval(expression, globals=None, locals=None)- Выполняет строку программного кода.
exec(object[, globals[, locals]])- Выполняет программный код на Python.
filter(function, iterable)- Возвращает итератор из тех элементов, для которых
functionвозвращает истину. format(value[,format_spec])- Форматирование (обычно форматирование строки).
getattr(object, name ,[default])- извлекает атрибут объекта или
default. globals()- Словарь глобальных имен.
hasattr(object, name)- Имеет ли объект атрибут с именем
name. hash(x)- Возвращает хеш указанного объекта.
help([object])- Вызов встроенной справочной системы.
hex(х)- Преобразование целого числа в шестнадцатеричную строку.
id(object)- Возвращает "адрес" объекта. Это целое число, которое гарантированно будет уникальным и постоянным для данного объекта в течение срока его существования.
input([prompt])- Возвращает введенную пользователем строку.
Prompt- подсказка пользователю. isinstance(object, ClassInfo)- Истина, если объект является экземпляром
ClassInfoили его подклассом. Если объект не является объектом данного типа, функция всегда возвращает ложь. issubclass(класс, ClassInfo)- Истина, если класс является подклассом
ClassInfo. Класс считается подклассом себя. iter(x)- Возвращает объект итератора.
len(x)- Возвращает число элементов в указанном объекте.
locals()- Словарь локальных имен.
map(function, iterator)- Итератор, получившийся после применения к каждому элементу последовательности функции
function. max(iter, [args ...] * [, key])- Максимальный элемент последовательности.
min(iter, [args ...] * [, key])- Минимальный элемент последовательности.
next(x)- Возвращает следующий элемент итератора.
oct(х)- Преобразование целого числа в восьмеричную строку.
open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True)- Открывает файл и возвращает соответствующий поток.
ord(с)- Код символа.
pow(x, y[, r])- Аналогично
( x ** y ) % r. reversed(object)- Итератор из развернутого объекта.
repr(obj)- Представление объекта.
print([object, ...], *, sep=" ", end='\n', file=sys.stdout)- Печать.
property(fget=None, fset=None, fdel=None, doc=None)
round(X [, N])- Округление до
Nзнаков после запятой. setattr(объект, имя, значение)- Устанавливает атрибут объекта.
sorted(iterable[, key][, reverse])- Отсортированный список.
staticmethod(function)- Статический метод для функции.
sum(iter, start=0)- Сумма членов последовательности.
super([тип [, объект или тип]])- Доступ к родительскому классу.
type(object)- Возвращает тип объекта.
type(name, bases, dict)- Возвращает новый экземпляр класса
name. vars([object])- Словарь из атрибутов объекта. По умолчанию - словарь локальных имен.
zip(*iters)- Итератор, возвращающий кортежи, состоящие из соответствующих элементов аргументов-последовательностей.