2012-06-01 5 views
1
args = [4,5] 
kwargs = {'x': 7} 
func(a, b=2, *args, **kwargs) 

Что такое принятая номенклатура для ссылок на a, b, args и kwargs?номенклатура аргументов функции Python

В частности, заполнить пробел здесь:

'a' is a (_blank_) positional argument 
'args' contains (_blank_) positional arguments 
'b' is a (_blank_) keyword argument 
'kwargs' contains (_blank_) keyword arguments 

Я ищу что-то вроде (пустой) = {формальной/произвольной длины/фактическая/переменная позиция/фиксированная}

Также, пожалуйста, поправьте меня, если я ошибаюсь выше.

+5

Я не уверен, что семантика вы пытаетесь захватить, но если вы замените 'blank' с, хорошо, пусто - то есть, ничего - тогда все ваши предложения, не кажется правильным быть. Например: '' a 'является позиционным аргументом. ' –

+0

@mark: Вы пытаетесь сформулировать разницу между« формальными параметрами »и« аргументами функции »? –

+0

Я пытаюсь устранить споры о аргументах функции. Например, если «b» должно было быть 3 вместо 2, что бы кто-нибудь сказал мне? «Эй, аргумент вашего ключевого слова неверен» звучит неоднозначно для меня. – mark

ответ

1

Большая часть того, что вы ищете, находится в the Python Tutorial.

Слева направо:

  • a является позиционным аргументом.
  • b=3 является позиционным аргумент со значением по умолчанию 3.
  • *args произвольный список аргументов, распаковал в виде кортежа.
  • **kwargs является аргументом ключевого слова, распакованным как словарь.
1

Как уже описывал Эдвард Лопер, ваши термины верны. Вы можете быть более конкретными:

  1. «а» первых требуется позиционного аргумента.
  2. 'args' проходит незаконно позиционные аргументы. (Вы знаете, так как вы используете его после ключевого слова аргумента.)
  3. «Ь» является опциональным ключевого слова аргумента ... название б ... со значением по умолчанию 2.
  4. «kwargs» проходит произвольные аргументы ключевого слова.

    def punk(a, b, *args, **kwargs): 
        print a 
        print b 
        print args 
        print kwargs 
    
    a=1; b=2; args = [4,5]; kwargs={'x':7} 
    punk(a, b=b, *args, **kwargs) 
    Traceback (most recent call last): 
        File "<stdin>", line 1, in <module> 
    TypeError: punk() got multiple values for keyword argument 'b' 
    

Если вы используете args легально, можно сказать, что она используется для передачи потенциально необходимых и произвольных позиционных аргументов.

>>> punk(a, *args) 
1 
4 
(5,) 
{} 
Смежные вопросы