📜  可选参数 python (1)

📅  最后修改于: 2023-12-03 15:07:27.436000             🧑  作者: Mango

可选参数 Python

简介

在 Python 中,有时候我们需要对一个函数进行不同的调用方式,例如传入不同的参数来进行处理,这时候就需要用到可选参数了。

Python 的函数可以接收任意数量的参数,这些参数可以分为两大类:必需参数和可选参数。必需参数指的是函数定义时必须要传入的参数,而可选参数是指在函数调用时可以不传入的参数。

使用方法

在 Python 中,我们可以通过在函数的参数列表中添加默认值来实现可选参数。

def print_info(name, age=18, gender='男'):
    print(f'姓名:{name},年龄:{age},性别:{gender}')

print_info('张三')  # 姓名:张三,年龄:18,性别:男
print_info('李四', 20)  # 姓名:李四,年龄:20,性别:男
print_info('王五', gender='女')  # 姓名:王五,年龄:18,性别:女

在上面的示例中,我们定义了一个 print_info 函数,其接收一个必需参数 name 和两个可选参数 agegender。如果在调用函数时不传入 agegender 参数,则会使用默认值。

在调用函数时,我们可以不按照参数列表的顺序传入参数,只需要在传入参数时将参数名和值用等号连接即可,例如在第三个示例中,我们先传入了必需参数 name,再传入了可选参数 gender

注意事项

需要注意的是,在定义函数时,必需参数必须在可选参数之前,否则会引发语法错误。

def print_info(age=18, name, gender='男'):  # 报错:SyntaxError: non-default argument follows default argument
    print(f'姓名:{name},年龄:{age},性别:{gender}')

同时,还需要注意的是,参数默认值只会在函数定义时进行一次赋值。如果可选参数是可变类型(例如列表、字典等),则会因为多次调用函数导致参数值累加。

def print_list(a, b=[]):
    b.append(a)
    print(b)

print_list(1)  # [1]
print_list(2)  # [1, 2]
print_list(3)  # [1, 2, 3]

在上述示例中,我们定义了一个函数 print_list,其接收一个必需参数 a 和一个可选参数 b,默认值为空列表。每次调用函数时,我们向参数 b 中添加一个元素 a,然后输出整个列表。但是由于参数默认值只会在函数定义时进行一次赋值,第二次调用函数时默认值已经被赋值为 [1],因此会输出 [1, 2]

为了避免这类问题,我们可以使用 None 来代替空可变类型作为参数的默认值,并在函数内部判断参数是否为 None,需要时在函数内部创建一个新的空列表或字典。