Генераторы словарей и модули Рython
Функции в языке Python Функции в языке PythonВсе функции в языке Python возвращают какое-либо значение, хотя вполне возможно (и часто так и делается) просто игнорировать это значение. Возвращаемое значение может быть единственным значением или кортежем значений,...
Реализация генераторов Реализация генераторовМы рассмотрели коллекции-последовательности, tuple, collections, na-medtuple и list, поддерживающие, как и строки, возможность извлечения срезов. Также было рассмотрено использование оператора распаковывания...
Парсинг документов XML Парсинг документов XMLXML: Для парсинга документов XML широко используются два основных подхода. Один из них основан на анализе DOM (Document Object Model -объектная модель документа), а другой - на использовании SAX (Simple API for XML - упрощенный...
Копирование коллекций Копирование коллекцийКопирование коллекций: Поскольку в языке Python повсюду используются ссылки на объекты, когда выполняется оператор присваивания (=), никакого копирования данных на самом деле не происходит. Если справа от оператора находится литерал,...
Функции в языке Python
Все функции в языке Python возвращают какое-либо значение, хотя вполне возможно (и часто так и делается) просто игнорировать это значение. Возвращаемое значение может быть единственным значением или кортежем значений, а сами значения могут быть коллекциями, поэтому практически не существует никаких ограничений на то, что могут возвращать функции. Мы можем покинуть функцию в любой момент, используя инструкцию return.

Если инструкция return используется без аргументов или если мы вообще не используем инструкцию return, функция будет возвращать значение None. Некоторые функции имеют параметры, для которых может существовать вполне разумное значение по умолчанию. Здесь при помощи синтаксиса parameter=default было определено значение по умолчанию для параметра letters.

Функции в языке PythonЭто позволяет вызывать функцию letter_count с единственным аргументом, например, let-ter_count("Maggie and Hopey"). В этом случае внутри функции параметр letter будет содержать строку, которая была задана как значение по умолчанию. Синтаксис параметров не позволяет указывать параметры, не имеющие значений по умолчанию, после параметров со значениями по умолчанию, поэтому такое определение: def bad(a, b=1, с):, будет вызывать синтаксическую ошибку.

С другой стороны, мы не обязаны передавать аргументы в том порядке, в каком они указаны в определении функции - мы можем использовать именованные аргументы и передавать их в виде name=value. Поскольку оба параметра, length и indicator, имеют значение по умолчанию, любой из них или даже оба сразу могут быть опущены, тогда будут использоваться значения по умолчанию - этот случай соответствует первому вызову. Во втором вызове оба аргумента являются именованными, поэтому их можно указывать в любом порядке. В третьем вызове используются позиционный аргумент и именованные аргументы.

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

Осторожное использование значений по умолчанию может упростить программный код и сделать вызовы функций более понятными. Вспомните, что функция ореп имеет один обязательный аргумент (имя файла) и шесть необязательных аргументов. Используя смесь из позиционных и именованных аргументов, мы можем указывать только необходимые аргументы, опуская другие. Это дает нам возможность записать такой вызов: open(filename, encoding="utf8"), вместо того чтобы указывать все аргументы, например: open(filename, "г", None, "utf8", None, None, True).
Навигация: 1 2 3 4
 
 
© Copyright