📅  最后修改于: 2023-12-03 14:46:39.971000             🧑  作者: Mango
在Python中,函数可以接受可选参数,这使得函数的使用更具灵活性。可选参数可以带有默认值,也可以在调用函数时被手动传递。
定义函数时,可以给某一个参数指定默认值,从而使该参数变为可选参数。如果调用该函数时未传递对应参数的实参,则使用该参数的默认值。
def greet(name, greeting='Hello'):
print(greeting, name)
greet('Alex') # 输出: Hello Alex
greet('Alex', 'Hi') # 输出: Hi Alex
在上面的例子中,greeting
是一个可选参数,它的默认值是'Hello'
。在第一次调用函数时,我们只传递了一个参数'Alex'
,这时函数使用了greeting
的默认值。在第二次调用函数时,我们手动传递了'Hi'
作为greeting
参数的实参,这时函数使用了我们传递的实参。
注意,在定义函数时,带有默认值的参数必须放在参数列表的最后面。
除了使用默认值,我们还可以在调用函数时手动传递可选参数。
def greet(name, greeting='Hello', punctuation='!'):
print(greeting, name, punctuation)
greet('Alex') # 输出: Hello Alex !
greet('Alex', 'Hi') # 输出: Hi Alex !
greet('Alex', 'Hi', '!!!') # 输出: Hi Alex !!!
在上面的例子中,我们定义了两个可选参数greeting
和punctuation
。第一次调用函数时,我们只传递了一个参数'Alex'
,这时函数使用了两个可选参数的默认值。第二次调用函数时,我们手动传递了'Hi'
作为greeting
参数的实参,其他参数仍然使用默认值。第三次调用函数时,我们手动传递了全部参数的实参。
如果我们不知道调用函数时会传递多少个参数,可以使用可变长参数列表接收它们。可变长参数列表使用*args表示,它会把所有额外传递的参数打包成一个元组。
def average(*args):
return sum(args) / len(args)
print(average(1, 2, 3)) # 输出: 2.0
print(average(1, 2, 3, 4, 5)) # 输出: 3.0
在上面的例子中,我们定义了一个average
函数,它接受任意数量的参数。它先将所有参数求和,然后除以参数数量得到平均值。
除了可变长参数列表外,我们还可以使用可变长关键字参数列表接收额外传递的关键字参数。可变长关键字参数列表使用**kwargs表示,它会把所有额外传递的关键字参数打包成一个字典。
def person(**kwargs):
print(kwargs)
person(name='Alex', age=20) # 输出: {'name': 'Alex', 'age': 20}
在上面的例子中,我们定义了一个person
函数,它可以接受任意数量的关键字参数。我们手动传递了两个关键字参数name
和age
,它们被打包成一个字典传递给函数。函数内部用print
语句输出了这个字典。
Python中的可选参数使得函数的使用更加灵活。我们可以通过给某一个参数指定默认值,或者手动传递参数来控制函数的行为。此外,我们还可以使用可变长参数列表和可变长关键字参数列表来接受任意数量的参数。