*args и *kwargs, ARG! 🏴☠️

Большинство людей узнают о *args и **kwargs при изучении Python, не понимая, что происходит.

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

def printArgs(first, second):
  print(first)
  print(second)

//invoke it
printArgs(1, 2)

//this will print:
1
2
Войти в полноэкранный режим Выйти из полноэкранного режима

Ну, это, конечно, здорово. Но что если у вас есть случай, когда вы не уверены, сколько аргументов будет передано? Эта функция печатает два. А если один?

А если три? Или пятьдесят? Она выведет только два.

Вот тут-то и приходят на помощь *args.

def printingArgs(*args):
  for arg in args:
    print(arg)

//invoke it
printingArgs(1, 2, 3, 4)

//prints
1
2
3
4
Войти в полноэкранный режим Выход из полноэкранного режима

Примечание: Вы можете назвать *args как угодно. Значение имеет * в начале. Вы можете назвать его *asdf и затем использовать

for thing in asdf:
   print(thing)
Войти в полноэкранный режим Выйти из полноэкранного режима

и это все равно будет работать.

*kwargs похожи, но они означают Keyword Args; то есть аргументы, названные ключевыми словами, например firstName="Bob" или что-то в этом роде.

def printingArgsAndKwargs(*args, **kwargs):
  for arg in args:
    print(arg)
  for key, value in kwargs.items():
    print(key,value)

//invoke it
printingArgsAndKwargs(1, 2, 3, a=1, b=2, c=3)

//prints args first
1
2
3
//prints kwargs
('a', 1)
('b', 2)
('c', 3)
Вход в полноэкранный режим Выход из полноэкранного режима

Вот и все, как можно проще.

Оцените статью
devanswers.ru
Добавить комментарий