Большинство людей узнают о *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)
Вот и все, как можно проще.