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

В сети

Пользователей: 103
Из них просматривают:
Аналоги: 32. Видео: 1. Даташиты: 17. Инструкции: 8. Новости: 11. Остальное: 13. Ошибки: 1. Программы: 3. Производители: 4. Профиль пользователя: 1. Теги: 1. Форум: 8. Чат: 3.
Участников: 5
Гостей: 98

KT315 , 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

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

Разное

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

Интересно

Полихлорвиниловые трубки легче натянуть на изолируемые предметы (отвертки, пинцеты, радиодетали), если на 15-20 мин поместить их в ацетон.

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