063、Python 位置参数和命名关键字参数

在定义一个带参函数时,我们可以定义参数为位置参数或命名关键字参数。它们在函数定义和调用时有一些区别。

1、位置参数:

位置参数是最常见的参数类型,它们按照定义时的顺序进行传递。在函数定义中,参数按顺序声明,调用函数时需要按照相同的顺序传递参数,如:

def greet(name, age):
    print(f"Hello, {name}. You are {age} years old.")

greet("Alice", 30)  # 位置参数传递

2、命名关键字参数:

命名关键字参数是在位置参数后面的参数,调用时必须使用参数名进行传递。这样可以避免参数顺序错误导致的混乱,如:

def greet(name, age, city='New York'):
    print(f"Hello, {name}. You are {age} years old. You live in {city}.")

greet("Bob", 25, city='Los Angeles')  # 使用命名关键字参数传递

3、区别:

  • 位置参数必须按照函数定义的顺序传递,而命名关键字参数则可以根据参数名进行传递,不受顺序限制。
  • 命名关键字参数在函数定义时可以指定默认值,而位置参数不可以。

如下实例:

def greet(name, age, city='New York'):
    print(f"Hello, {name}. You are {age} years old. You live in {city}.")

greet("Alice", 30)  # 默认使用 New York
greet("Bob", 25, city='Los Angeles')  # 指定 Los Angeles
greet(name="Charlie", age=35)  # 使用命名关键字参数传递
greet(city='Los Angeles',name="Charlie", age=35)  # 使用命名关键字参数传递,不受顺序限制

4、其它用法:

除了上面的常规用法,我们还可以使用一个单独的星号*来标志位置参数的结束,从而区分位置参数和命名关键字参数。

即写在*前面的参数为位置参数,调用函数时,只需对号入座,而写在*后面的参数为命名关键字参数,调用时,必须写成“参数名=参数值”的形式。

这种语法明确指定了参数的传递方式,特别是当函数参数较多或者参数含有默认值时,可以提高函数的可读性,并防止参数传递时的混淆。

如下示例:

def my_function(a, b, *, c, d):
    print(a, b, c, d)

my_function(1, 2, c=3, d=4)  # 正确调用
# my_function(1, 2, 3, 4)  # 错误调用,会引发错误

在上面的示例中,ab*前面,是位置参数,而cd*后面,是命名关键字参数。所以cd`必须使用关键字参数进行传递。

说明:

  • *之前的参数是位置参数,调用函数时,必须按照顺序传递。
  • *之后的参数是命名关键字参数,必须使用关键字参数进行传递,即必须写成“参数名=参数值”的形式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不在同一频道上的呆子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值