Python的函数可变参数*args,**kwargs


TL;DR

  • *args: 一个*用于表示传入的元组参数,例如(2, 3, 4, 5)
  • **kwargs*: 两个*用于表示传入的是键值对参数,例如{'name': '小明', 'age': 18}

解释

img

# 多值参数(可变参数)第一种方式  推荐
# *表示元组,**表示字典。 **字典参数放在*元组参数后面,且放在参数列表最后
def demo(num, *nums, **person):
  # nums是一个元组; person是一个字典
  print(num)      # 1
  print(nums)     # (2, 3, 4, 5)
  print(person)   # {'name': '小明', 'age': 18}

demo(1, 2, 3, 4, 5, name="小明", age=18)
# 1
# (2, 3, 4, 5)
# {'name': '小明', 'age': 18}

image-20200507104956484

def demo(*args, **kwargs):
    print(args)
    print(kwargs)


# 元组变量/字典变量
gl_nums = (1, 2, 3)
gl_dict = {"name": "小明", "age": 18}

# demo(gl_nums, gl_dict)  # 会把gl_nums和gl_dict当做元组的两个元素传递给args

# 拆包语法,简化元组变量/字典变量的传递
demo(*gl_nums, **gl_dict)
# (1, 2, 3)
# {'name': '小明', 'age': 18}

# 拆包语法等同于下面的代码
demo(1, 2, 3, name="小明", age=18)

欢迎订阅我的博客:RSS feed
知乎: 赤乐君
Blog: BrambleXu
GitHub: BrambleXu
Medium: BrambleXu

参考资料


文章作者: BrambleXu
版权声明: 本博客所有文章除特別声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 BrambleXu !
评论
  目录