Python语法学习——多值参数

文章目录

  • 1. 多值参数简介
  • 2. 多值参数代码示例
  • 3. 元组和字典的拆包

1. 多值参数简介

在定义一个函数时,有时候可能需要一个函数能够处理的参数个数不确定,此时就可以使用多值参数

在Python中,有两种多值参数:

  • 函数形参名前增加一个*,函数可以在调用时接收元组
  • 函数形参名前增加两个*,函数可以在调用时接收字典

一般在给多值参数命名是,习惯使用以下两个名字:

  • *args——存放元组参数;
  • **kwargs——存放字典参数。

2. 多值参数代码示例

def demo(num, *nums, **persons):
    print(num)
    print(nums)
    print(persons)


def main():
    print("=" * 10, "以下是demo(1)的输出", "=" * 10)
    demo(1)
    print("=" * 10, "以下是demo(1, 2, 3, 4, 5)的输出", "=" * 10)
    demo(1, 2, 3, 4, 5)
    print("=" * 10, """以下是demo(1, 2, 3, 4, 5, name="小明", age=18)的输出""",
          "=" * 10)
    demo(1, 2, 3, 4, 5, name="小明", age=18)


if __name__ == "__main__":
    main()

运行上述代码的输出为:

========== 以下是demo(1)的输出 ==========
1
()
{}
========== 以下是demo(1, 2, 3, 4, 5)的输出 ==========
1
(2, 3, 4, 5)
{}
========== 以下是demo(1, 2, 3, 4, 5, name=“小明”, age=18)的输出 ==========
1
(2, 3, 4, 5)
{‘name’: ‘小明’, ‘age’: 18}

3. 元组和字典的拆包

在上述示例中,传递多个参数给args时,可以在调用函数时直接传入多个值,传递多个键值对给kwargs时,可以直接以多个键值对的形式传入函数。

如果现在需要直接传递元组给args,或传递字典给kwargs,当然可以手动将元组/字典的值/键值对拆开,然后传入函数,这样虽然可以,但是很不方便,于是Python提供了可以直接传入元组/字典引用的语法,这样的语法就叫做拆包

在调用带有多值参数的函数时,如果希望:

  • 直接将一个元组变量传递给args,可以在调用函数时,在元组变量前增加一个*;
  • 直接将一个字典变量传递给kwargs,可以在调用函数时,在字典变量前增加两个*。

代码示例如下所示:

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


def main():
    # 定义元组/字典变量
    nums = (1, 2, 3)
    dictionary = {"name": "xiaoming", "age": 18}
    demo(*nums, **dictionary)


if __name__ == "__main__":
    main()

你可能感兴趣的:(#,高级语法,python)