вторник, 5 марта 2013 г.

Python *args и **kwargs - переменное число аргументов в функциях

В языке Python функциям позволяется принимать разное количество произвольных аргументов, имена которых неизвестны до момента выполнения кода.

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

*args - это кортеж (1, 2, 3) со значениями переменных, подставленных в функцию.

Если поместить две звёздочки ** перед параметром в определении функции, то любые именованные аргументы будут развёрнуты в хэш-массив (словарь).

**kwargs - это хэш-массив {'a': 1, 'b': 2, 'c': 3} с ключами и значениями переменных, подставленных в функцию.

Пример.

>>> def foo(*args):
...         print(args)

>>> foo(1, 2, 3)
1, 2, 3



>>> def foo(**kwargs):
...         print(kwargs)

>>> foo(a = 1, b = 2, c = 3)
{'a': 1, 'b': 2, 'c': 3}



>>> def foo(*args, **kwargs):
...         print ("Positional arguments are:")
...         print (args)
...         print ("Keyword arguments are:")
...         print (kwargs)

>>> foo(1, 2, 3, a = 1, b = 2, c = 3)
Positional arguments are:"
1, 2, 3
Keyword arguments are:
{'a': 1, 'b': 2, 'c': 3}

1 комментарий:

  1. M.D. Transit Connect Titanium | TITNC
    The M.D. connect titanium is titanium rimless glasses an alloy-forming structure that allows for greater control of a single urban titanium metallic piece of titanium jewelry data. This titanium helix earrings makes infiniti pro rainbow titanium flat iron the system ideal for

    ОтветитьУдалить