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

可选参数

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

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

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

猜你喜欢

转载自blog.csdn.net/weixin_43135178/article/details/131734938