引言
在前面的课程中,我们已经学习了 Python 的基本输入输出、数据类型及其转换、顺序结构、分支结构、循环结构、循环控制语句、字符串类型、列表类型、元组类型、字典类型、集合类型、函数的定义与使用以及函数调用与作用域。本课时将介绍 Python 中函数的高级应用,包括默认参数、可变参数,并通过一个具体的示例来展示函数的高级用法。
默认参数
默认参数是指在定义函数时为参数指定一个默认值。如果在调用函数时没有传递相应的参数值,函数将使用默认值。默认参数使得函数更加灵活,减少了调用时的参数数量。
示例:默认参数
def greet(name="Guest"):
""" 打印问候语,如果没有提供名字,默认为 'Guest'。"""
print(f"Hello, {name}!")
greet() # 输出:Hello, Guest!
greet("Alice") # 输出:Hello, Alice!
可变参数
可变参数允许函数接收不定数量的参数。Python 支持两种类型的可变参数:位置参数和关键字参数。
-
位置参数 (
*args
):- 使用
*args
可以接收不定数量的位置参数,这些参数会被打包成一个元组。
def print_numbers(*args): """ 打印所有传入的数字。""" for number in args: print(number) print_numbers(1, 2, 3, 4) # 输出:1 2 3 4
- 使用
-
关键字参数 (
**kwargs
):- 使用
**kwargs
可以接收不定数量的关键字参数,这些参数会被打包成一个字典。
def print_info(**kwargs): """ 打印所有传入的关键字参数。""" for key, value in kwargs.items(): print(f"{key}: {value}") print_info(name="Alice", age=25, city="New York") # 输出:name: Alice age: 25 city: New York
- 使用
函数的高级用法
现在我们通过一个具体的示例来展示如何使用函数的高级用法。假设我们需要编写一个程序,该程序可以计算多个数的平均值,并支持可选的关键字参数来指定是否返回结果的四舍五入值。
示例代码:
def calculate_average(*numbers, round_result=False):
""" 计算多个数的平均值,并支持四舍五入选项。"""
if not numbers:
return None
total = sum(numbers)
average = total / len(numbers)
if round_result:
average = round(average)
return average
# 主程序
def main():
# 计算平均值
avg1 = calculate_average(10, 20, 30)
print(f"平均值(不四舍五入): {avg1}") # 输出:平均值(不四舍五入): 20.0
# 计算平均值并四舍五入
avg2 = calculate_average(10, 20, 30, round_result=True)
print(f"平均值(四舍五入): {avg2}") # 输出:平均值(四舍五入): 20
# 没有传入任何数字
avg3 = calculate_average()
print(f"没有数字时的平均值: {avg3}") # 输出:没有数字时的平均值: None
# 运行主程序
if __name__ == "__main__":
main()
示例解析
-
定义函数
calculate_average
:- 该函数接受不定数量的位置参数
*numbers
,并支持一个可选的关键字参数round_result
。 - 如果没有传入任何数字,函数返回
None
。 - 计算所有传入数字的总和和平均值。
- 如果
round_result
为True
,则对平均值进行四舍五入。 - 最后返回计算结果。
- 该函数接受不定数量的位置参数
-
主程序
main
:- 调用
calculate_average
函数,计算不同情况下的平均值,并打印结果。
- 调用
小结
通过本课时的学习,你已经掌握了 Python 中函数的高级应用,包括默认参数和可变参数,并通过一个具体的示例展示了如何使用这些高级特性来解决实际问题。理解这些高级特性可以使你的函数更加灵活和强大,提高代码的可读性和可维护性。
标签:四舍五入,函数,average,高级,参数,应用,print,平均值 From: https://blog.csdn.net/qq_57335683/article/details/142358485