【问题标题】:Uderstanding *args and **kwargs了解 *args 和 **kwargs
【发布时间】:2021-07-26 18:48:22
【问题描述】:

我正在尝试习惯在 python 函数中使用 *args 和 **kwargs,但我很难使用它。

例如:

def foo(a, b, *args):
   print(a)
   print(b)
   if args1 == True:
      print(args2)
   else:
      print(a+args1)

所以如果我运行它

foo('one','two')

我期待它打印我'one''two', 但是如果我跑

foo('one','two',True,'three')

我想得到'one''two''three', 和作为

foo('one','two','three')

我想得到'one','two', 'onethree'

我怎样才能实现它?

【问题讨论】:

    标签: python args keyword-argument


    【解决方案1】:

    参数

    定义:

    def foo1(a, b, *args):
       print(a)
       print(b)
       if args:
          for arg in args:
              print(arg)
    

    用法:

    foo1(1, 2, 3, 4)
    foo1(1, 2, *[3, 4])
    

    kwargs

    定义:

    def foo2(a, b, **kwargs):
       print(a)
       print(b)
       if kwargs:
          for k, v in kwargs.items():
              print(f'{k}: {v}')
    

    用法:

    foo2(1, 2, c=3, d=4)
    foo2(1, 2, **{'c':3, 'd':4})
    

    【讨论】:

      【解决方案2】:
        def foo(a, b, *args):
          print(a)
          print(b)
          if args and args[0]==True:
              print(args[0])
          else:
              print(a+args[0])
      
      foo('one','two','three')
      
      one
      two
      onethree
      

      【讨论】:

      • 1.如果没有传递任何参数,这将崩溃。 2. 不要用勺子喂人——就像俗话说的那样,不要给他们鱼,教他们如何捕鱼。
      猜你喜欢
      • 2020-09-16
      • 2017-01-28
      • 2016-04-20
      • 2022-09-22
      • 2013-09-25
      • 1970-01-01
      • 2018-08-28
      • 2013-08-04
      • 1970-01-01
      相关资源
      最近更新 更多