【问题标题】:How can we print the argument-list from args and kwargs?我们如何从 args 和 kwargs 打印参数列表?
【发布时间】:2019-10-21 21:47:41
【问题描述】:

假设我们有一个可变参数函数,例如:

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   

【问题讨论】:

    标签: python python-3.x parameter-passing variadic-functions


    【解决方案1】:

    这几乎可以满足您的需求:

    def foo(*args, **kwargs):
        print(args + tuple('{} = {}'.format(key,val) for key,val in kwargs.items()))
    

    【讨论】:

      【解决方案2】:

      以下似乎可以解决问题:

      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'
      

      【讨论】:

        猜你喜欢
        • 2013-01-03
        • 2015-09-02
        • 2020-09-16
        • 2017-01-28
        • 1970-01-01
        • 2023-03-19
        • 2017-03-26
        • 2012-04-30
        • 2021-07-26
        相关资源
        最近更新 更多