python中的函数参数的调用方式

1. 位置参数(Positional Arguments)

  • 直接传入:可以直接按照顺序传入参数值,即直接传入实参值
  • 关键字形式传递:也可以通过关键字的形式传递。即key = value的形式,其中key为函数形参的参数名字,value为传入实参

2. 默认参数(Default Arguments)

  • 直接传入:可以直接按照顺序传入参数值。
  • 关键字形式传递:也可以通过关键字的形式传递。

3. 关键字参数(Keyword Arguments)

  • 必须通过关键字的形式传递:关键字参数的名字必须与函数定义中的名字一致,并且是以 key=value 的形式传递。
  • 数量可变:可以传入任意数量的关键字参数,这些参数在函数内部会被收集到一个字典中。

4. 可变参数(Variable-length Arguments)

可变参数包括两种形式:*args 和 **kwargs

  • *args(可变位置参数)

    • 允许传入任意数量的位置参数,这些参数会以元组的形式传递给函数。
    • 不能通过关键字形式传递。
  • **kwargs(关键字参数)

    • 允许传入任意数量的关键字参数,这些参数会以字典的形式传递给函数。
    • 必须使用关键字形式传递
def example_func(a, b=2, *args, **kwargs):
    print("a:", a)
    print("b:", b)
    print("args:", args)
    print("kwargs:", kwargs)

# 直接传入位置参数
example_func(1)  
# 输出:
# a: 1   位置参数
# b: 2
# args: ()  可变参数
# kwargs: {}  关键字参数

# 使用关键字形式传递位置参数和默认参数
example_func(a=1, b=3) 
# 输出:
# a: 1
# b: 3
# args: ()
# kwargs: {}

# 使用位置参数传递可变参数
example_func(1, 2, 3, 4, 5) 
# 输出:
# a: 1
# b: 2
# args: (3, 4, 5)
# kwargs: {}

# 使用关键字形式传递关键字参数
example_func(1, 2, 3, name="Alice", age=30) 
# 输出:
# a: 1
# b: 2
# args: (3,)
# kwargs: {'name': 'Alice', 'age': 30}

5. 命名关键字参数

        命名关键字参数限定了传入的形参的名字,调用时必须以规定的命名作为关键字,以关键字的形式传递,当定义的函数中没有可变参数时,其与位置参数或默认参数之间要通过*进行分隔,例如:

def example_func(a, *, b, c):
    print(a, b, c)

example_func(1, b=2, c=3)  # 输出: 1 2 3

其中a为位置参数,b、c为命名关键字参数,b、c调用时必须采用规定的名字(b、c)作为关键字进行传入。

        当函数中有可变位置参数时,可变位置参数与命名关键字参数之间不需要加入*,原因也比较简单,因为可变位置参数调用不可通过关键字的形式进行传入,而命名关键字参数或关键字参数必须通过关键字形式传入,可以有效区分。例如:

def example_func(a, *args, b, c):
    print(a, args, b, c)

example_func(1, 2, 3, b=4, c=5)  # 输出: 1 (2, 3) 4 5

函数中的args为可变位置参数,而b、c为命名关键字参数。

6、函数参数的组合使用

        当函数中同时存在各种函数参数时(不建议,因为会降低代码可读性),其从前到后的顺序为位置参数、默认参数、可变参数、命名关键字参数、关键字参数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值