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

В сети

Пользователей: 127
Из них просматривают:
Аналоги: 49. Видео: 1. Даташиты: 18. Инструкции: 3. Новости: 23. Остальное: 4. Ошибки: 1. Партнёры: 1. Программы: 2. Производители: 2. Торрент: 5. Форум: 15. Чат: 3.
Участников: 5
Гостей: 122

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

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

Разное

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

Интересно

Цинк для изготовления паяльной кислоты можно найти в старых батарейках питания.

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