Как мы можем напечатать список аргументов из args и kwargs? - PullRequest
0 голосов
/ 22 октября 2019

Предположим, что у нас есть переменная функция, такая как следующее:

def foo(*args, **kwargs):
    pass

Я хотел бы отредактировать foo, чтобы она печатала список аргументов. Например, мы хотим, чтобы следующий код ...

foo(98, 99, 100, a = 1, b = 2, c = 3)

... напечатать ...

98, 99, 100, a = 1, b = 2, c = 3   

Ответы [ 2 ]

3 голосов
/ 22 октября 2019

Это будет делать то, что вы хотите:

def foo(*args, **kwargs):
    print(args + tuple('{} = {}'.format(key,val) for key,val in kwargs.items()))
0 голосов
/ 22 октября 2019

Кажется, что сработает следующее:

import itertools

rep_kwarg = lambda kwarg: kwarg[0] + " = " + str(kwarg[1])

def foo(*args, **kwargs):
    kwargs2 = map(rep_kwarg, kwargs.items())
    it_combo = itertools.chain(args, kwargs2)
    it_combo_str = map(str, it_combo)
    arg_list = ', '.join(it_combo_str)
    print("RESULT == ", repr(arg_list))


args = [98, 99, 100]
kwargs = {
    "a": 1,
    "b": 2,
    "c": 3
}
foo(*args, **kwargs)
foo(98, 99, 100, a = 1, b = 2, c = 3)

Вывод на консоль:

RESULT ==  '98, 99, 100, a = 1, b = 2, c = 3'
RESULT ==  '98, 99, 100, a = 1, b = 2, c = 3'
...