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

В сети

Пользователей: 113
Из них просматривают:
Аналоги: 34. Даташиты: 23. Инструкции: 4. Новости: 17. Остальное: 14. Ошибки: 2. Профиль пользователя: 1. Теги: 1. Торрент: 2. Форум: 13. Чат: 2.
Участников: 4
Гостей: 109

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

Партнёры


Партнёры

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

Оглавление

4.7.3. Именованные аргументы

Функция может быть вызвана с использованием именованных аргументов (keyword arguments) в виде 'keyword = value'. Например, функция ask_ok() (раздел 4.7.1) может быть вызвана следующими способами:

 

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
...
>>> function(0, a=0)
...
Traceback (most recent call last):
  File "<pyshell#7>", line 1, in <module>
    function(0, a=0)
TypeError: function() got multiple values for keyword argument 'a'

 

Если в определении функции присутствует формальный параметр в виде **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]

 

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

 

example(1000000,
’Это очень много’,
’Это действительно очень много’,
language = ’Python’,
author = ’Guido van Rossum’)

 

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

 

Количество пользователей: 1000000
----------------------------------------
Это очень много
Это действительно очень много
----------------------------------------
language: Python
author: Guido van Rossum

Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.
Отправитель Нити

Разное

Если "ревёт" один из дросселей резонансного стабилизатора, забейте деревянный клин между его катушками.

Интересно

Щуп станет универсальным, если с обратной стороны его на коротком проводе припаять"крокодил" в резиновом чехле.

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