Инструкции

Справочный раздел

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

Разделы инструкций

В сети

Пользователей: 251
Из них просматривают:
Аналоги: 83. Видео: 2. Галерея: 1. Даташиты: 73. Инструкции: 30. Новости: 15. Остальное: 5. Программы: 5. Производители: 11. Профиль пользователя: 5. Теги: 5. Форум: 16.
Участников: 2
Гостей: 249

Google , Яндекс , далее...
Рекорд 2375 человек онлайн установлен 26.12.2015.

Партнёры


Партнёры

Новые объявления

Оглавление

4.7.1. Значения аргументов по умолчанию

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

 

def ask_ok(prompt, retries=4, complaint='Да или нет, пожалуйста!'):
    while 1:
        ok = raw_input(prompt)
        if ok in ('д', 'да'): return 1
        if ok in ('н', 'не', 'нет'): return 0
        retries = retries - 1
        if retries < 0:
            raise IOError('Пользователь отказывается отвечать')
        print complaint

 

Эта функция может быть вызвана так: 'ask_ok('Вы действительно хотите выйти?')', или так: 'ask_ok('Записать файл?', 2)'.

Значения по умолчанию вычисляются в месте определения функции в области видимости определения, так что

 

i = 5
def f(arg = i): print arg
i = 6
f()

 

выведет 5.

Важное замечание: значение по умолчанию вычисляется только один раз. Это отражается в том случае, когда аргумент со значением по умолчанию является объектом, допускающим изменения, таким как список или словарь. Например, следующая функция накапливает передаваемые аргументы (то есть переменная l является статической)1:

 

def f(a, l = []):
        l.append(a)
        return l
print f(1)
print f(2)
print f(3)

 

Результат выполнения будет следующий:

 

[1]
[1, 2]
[1, 2, 3]

 

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

 

def f(a, l = None):
        if l is None:
                l = []
        l.append(a)
        return l

 

Примечания:
  • Такое поведение является, скорее, нежелательной особенностью языка, использование которой может привести к трудно отлавливаемым ошибкам. В качестве статических переменных рекомендуется использовать глобальные переменные модуля.
Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.

Разное

Интересно

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

Похожие инструкции