位置参数:函数中的位置参数是将参数转换为列表对象,
关键字参数:函数中的关键字参数是将参数转换为字典对象,

  1. 函数定义时的参数:
    默认值形参:
    关键字形参:使用*定义,
    个数可变的位置形参:使用*定义
    个数可变的关键字形参:使用**定义
  2. 函数调用时的参数:
    位置实参:
    将序列中的每个元素都转换为位置参数:使用*
    关键字实参:
    将字典中的每个键值对都转换为关键字实参:使用**
"""
位置参数:函数中的位置参数是将参数转换为列表对象,
关键字参数:函数中的关键字参数是将参数转换为字典对象,

函数定义时的参数:
    默认值形参:
    关键字形参:使用*定义,
    个数可变的位置形参:使用*定义
    个数可变的关键字形参:使用**定义

函数调用时的参数:
    位置实参:
    将序列中的每个元素都转换为位置参数:使用*
    关键字实参:
    将字典中的每个键值对都转换为关键字实参:使用**

"""


# a,b为函数定义时的形式参数
def fun1(a, b):
    print("a:", a)
    print("b:", b)


# 函数调用中的位置实参
fun1(1, 2)
# 函数调用时,将列表的每个元素都使用*转换为位置参数(实参)
lst1 = ["list1", "list2"]
fun1(*lst1)
# 函数调用时传递关键字实参
fun1(a=10, b=20)
# 函数调用时,使用**将字典中的每个键值对都转换为关键字实参
dic = {"a": 11, "b": 22}
fun1(**dic)


# a,b在函数定义出,为形参,但此时b有初始值:222,故b为默认值形参
def fun2(a, b=222):
    print("a:", a)
    print("b:", b)


# args为个数可变的位置形参
def fun3(*args):
    print("转换为列表对象的位置参数",args)

# args为个数可变的关键字形参
def fun4(**args):
    print("转换为列表对象的关键字参数",args)

fun3(1,2,3,4,5,6,7,8)
fun4(a=123,b=456,c=789)

# 推荐一种常用的函数定义方式
# 前者为个数可变的位置形参(调用时可传入列表对象,以及多个值),
# 后者为个数可变的关键字形参(调用时可传入字典对象,以及多个键值对形式的值)
def fun5(*arg, **args):
    pass

python 命名关键字参数 关键字参数 python函数关键字参数_python