Анимация
JavaScript


Главная  Библионтека 

0 1 2 3 4 5 6 7 8 [ 9 ] 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145

>>> function(0, a=0) Traceback (innermost last):

File "<stdin>", line 1, in ? TypeError: keyword parameter redefined

Если в определении функции присутствует формальный параметр в виде **name, то его значением становится словарь, содержащий все именованные аргументы, чьи имена не соответствуют формальным параметрам. Такой способ можно комбинировать с формой *name, позволяющей получить кортеж (tuple), содержащий позиционные аргументы, не входящие в список формальных параметров. (Запись **name должна следовать после записи * name.) Например, определим функцию:

def example(formal, *arguments, **keywords): print "Количество пользователей:", formal print -*40

for arg in arguments: print arg print -*40

for kw in keywords.keys():

print kw, :, keywords[kw]

ask ok(Вы действительно хотите вхйти?) ask ok(retries = 2, prompt = Перезаписать файл?) ask ok(Продолжим?, complaint =

А теперь то же самое, только по-русски!) ask ok(Удалить все файлы из корневого раздела?, 100,

А может все-таки удалить?)

Однако следующие вызовы ошибочны:

# отсутствует обязательнхй аргумент ask ok()

# неименованный аргумент следует за именованным ask ok(prompt = Перезаписать файл?, 2)

# два значения для одного аргумента ask ok(Продолжим?, prompt = Да/нет)

# неизвестное имя аргумента ask ok(actor = Никулин)

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

>>> def function(a): ... pass



4.7.4 Короткая форма

Python содержит несколько популярных особенностей, характерных для языков функционального программирования. С помощью ключевого слова lambda Вы можете создать простую функцию без имени. Например, функция, возвращающая сумму двух своих аргументов, может быть записана как lambda a, b: a+b. Короткая форма может быть использована везде, где требуется объект-функция. Ее синтаксис ограничен одним выражением. Как и в обычных определениях функций, при записи в короткой форме Вы не можете ссылаться на переменные, находящиеся в области видимости, которая содержит определение этой функции. Однако это ограничение можно обойти, используя значения аргументов по умолчанию:

>>> def make incrementor(n):

... return lambda x, incr=n: x+incr

>>> f = make incrementor(42)

>>> f(0) 42

>>> f(1) 43

4.7.5 Строки документации

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

Ее можно вызвать следующим образом:

example(1000000,

Это очень много,

Это действительно очень много,

language = Python,

author = Guido van Rossum)

Вывод будет таким:

Количество пользователей: 1000000

Это очень много

Это действительно очень много

language: Python

author: Guido van Rossum



4.7.6 Вызов функций

Помимо описанного (func (arg . . . )), язык Python предоставляет еще несколько способов вызова функций. Начиная с версии 1.6, Вы можете указать кортеж позиционных и словарь именованных аргументов, например:

args = (Это очень много,

Это действительно очень много) kwds = {language: Python,

author: Guido van Rossum) example(1000000, *args, **kwds)

Такой же эффект можно получить используя встроенную функцию apply() : apply(example, (1000000,)+args, kwds)

С помощью средств функционального программирования Вы можете применить функцию к элементам последовательности (см. раздел 5.2).

строкой. Первая строка часто используется интегрированными средами разработки (например, IDLE) в качестве подсказки при использовании объекта. Большинство встроенных объектов и объектов, определенных в стандартной библиотеке, снабжены строками документации - используйте их в качестве примеров оформления. Например:

>>> print map. doc

map(function, sequence[, sequence, ...]) -> list

Return a list of the results of applying the function to the items of the argument sequence(s). If more than one sequence is given, the function is called with an argument list consisting of the corresponding item of each sequence, substituting None for missing values when not all sequences have the same length. If the function is None, return a list of the items of the sequence (or a list of tuples if more than one sequence).

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



0 1 2 3 4 5 6 7 8 [ 9 ] 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145