函数设置“可选参数”和“可变参数(可变长度参数或不定长参数)”

文章介绍了Python中如何设置函数的可选参数,通过为参数设定默认值。然后详细讨论了可变参数的概念,包括使用*args接收任意数量的位置参数和使用**kwargs接收关键字参数。同时展示了如何在同一个函数中同时使用*args和**kwargs来处理不同类型的可变参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

可选参数

可以通过为某一个参数设置默认值,从而变为可选参数,就相当于为你默认设置了参数,而不需要自己再次设置

但是对于复杂的需要传参的函数,这种设置默认参数的行为并没有什么太大的作用

def greet(name, age=None, message="Hello"):
    print(message, name)
    if age is not None:
        print("Age:", age)

greet("Charlie")                 # 输出: Hello Charlie
greet("Dave", message="Hi")      # 输出: Hi Dave
greet("Eve", age=25, message="Hey")  # 输出: Hey Eve / Age: 25

可变参数

在 Python 中,你可以使用星号(*)来定义一个参数为可变参数,也称为可变长度参数或不定长参数。这允许你在函数调用时传递任意数量的参数。

以下是两种常见的方式来定义可变参数:

1)*args

使用*args:这种方式可以接收任意数量的位置参数,这种位置参数只能使用输入值进行传递,而不能设置键值对这种形式,因为在函数体内部,args 被视为一个元组(tuple)。

def my_function(*args):
    for arg in args:
        print(arg)

# 调用函数并传递多个参数
my_function(1, 2, 3)     # 输出: 1 2 3
my_function('a', 'b')    # 输出: a b

在这个示例中,*args 参数定义了可变参数。在函数体内部,args 被视为一个元组(tuple),包含了所有传递给函数的位置参数。

2)**kwargs

使用**kwargs:这种方式可以接收任意数量的关键字参数,这种关键字参数只能使用键值对这种形式,因为在函数体内部,kwargs被视为一个字典(dict)

def my_function(**kwargs):
    for key, value in kwargs.items():
        print(key, value)

# 调用函数并传递多个关键字参数
my_function(name="Alice", age=25)                      # 输出: name Alice / age 25
my_function(country="USA", city="New York", code=123)  # 输出: country USA / city New York / code 123

在这个示例中,**kwargs 参数定义了可变关键字参数。在函数体内部,kwargs 被视为一个字典(dict),包含了所有传递给函数的关键字参数及其对应的值。

你也可以同时使用 *args**kwargs,以接收任意数量的位置参数和关键字参数。

3)同时使用 *args**kwargs 

def my_function(*args, **kwargs):
    for arg in args:
        print("Positional argument:", arg)
    for key, value in kwargs.items():
        print("Keyword argument -", key, ":", value)

# 调用函数并传递多个位置参数和关键字参数
my_function(1, 2, name="Alice", age=25) 

输出:

Positional argument: 1
Positional argument: 2
Keyword argument - name : Alice
Keyword argument - age : 25

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Pengsen Ma

太谢谢了

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

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

打赏作者

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

抵扣说明:

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

余额充值