Инструкции

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

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

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

В сети

Пользователей: 150
Из них просматривают:
Аналоги: 50. Видео: 1. Даташиты: 31. Инструкции: 5. Кроссворд: 4. Магазин: 1. Новости: 10. Обзор: 1. Остальное: 4. Профиль пользователя: 12. Советы: 1. Теги: 2. Торрент: 1. Форум: 26. Чат: 1.
Участников: 3
Гостей: 147

an , Google , Яндекс , далее...
Рекорд 3921 человек онлайн установлен 06.03.2026.

Партнёры


Партнёры

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

В настоящее время нет объявлений.
Оглавление

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

 

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

Разное

Интересно

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

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